-
java 日期格式化-- SimpleDateFormat 的使用。字符串转日期,日期转字符串
2016-11-04 14:38:26日期和时间格式由 日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行...日期和时间格式由 日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串
白话文的讲:这些A——Z,a——z这些字母(不被单引号包围的)会被特殊处理替换为对应的日期时间,其他的字符串还是原样输出。日期和时间模式(注意大小写,代表的含义是不同的)
yyyy:年 MM:月 dd:日 hh:1~12小时制(1-12) HH:24小时制(0-23) mm:分 ss:秒 S:毫秒 E:星期几 D:一年中的第几天 F:一月中的第几个星期(会把这个月总共过的天数除以7) w:一年中的第几个星期 W:一月中的第几星期(会根据实际情况来算) a:上下午标识 k:和HH差不多,表示一天24小时制(1-24)。 K:和hh差不多,表示一天12小时制(0-11)。 z:表示时区
(2017-12-28日,更新)
因为看到了Java 8 里面对日期的格式化操作的API,回头又看了看这个以前的日期格式化。发现,文中的实例不是很全面。不符合湿胸的性格,特地来完善一下。
private static void formatDataTest() { /* * 日期转期望格式的字符串 */ //HH 和 hh 的差别:前者是24小时制,后者是12小时制。 StringBuilder sb = new StringBuilder(); sb.append("yyyy年MM月dd日 HH:mm:ss") .append(" 上下午标志 a") .append(" E") .append(" 一年中的第D天") .append(" 一月中的第F个星期") .append(" 一年中的第w个星期") .append(" 一月中的第W个星期") .append(" Z") .append(" z"); SimpleDateFormat sdf = new SimpleDateFormat(sb.toString()); String dateString = sdf.format(new Date()); System.out.println(dateString); /* * 字符串转日期 */ Date date; try { date = sdf.parse(dateString); System.out.println(date); } catch (ParseException e) { System.out.println(e.getMessage()); } }
运行结果:
2017年12月28日 18:21:731 上下午标志 下午 星期四 一年中的第362天 一月中的第4个星期 一年中的第52个星期 一月中的第5个星期 +0800 CST
Thu Dec 28 18:21:00 CST 2017这里多说一句,一个月中的第几个星期, F 这个出来的结果,不靠谱,具体我就在这多做测试啦,我是测试过,才这么说的,还是后面的那个 W 靠谱。
(更新完成)
具体简单常见的实例:
package com.lxk.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by lxk on 2016/11/4 */ public class Format { public static void main(String[] args) { Date ss = new Date(); System.out.println("一般日期输出:" + ss); System.out.println("时间戳:" + ss.getTime()); //Date aw = Calendar.getInstance().getTime();//获得时间的另一种方式,测试效果一样 SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = format0.format(ss.getTime());//这个就是把时间戳经过处理得到期望格式的时间 System.out.println("格式化结果0:" + time); SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); time = format1.format(ss.getTime()); System.out.println("格式化结果1:" + time); } }
测试结果图:
需要什么格式,自己拼好字符串,就可以格式化日期啦。授人以渔呀有木有。
喷子们要是觉得简单呢,就省省唾沫星子吧。我就记个笔记用。
上面的是:日期转自己想要的字符串格式,下面是字符串转日期类型。
private static void testStringToDate() { String s = "2017-05-25"; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = format.parse(s); } catch (ParseException e) { System.out.println(e.getMessage()); } System.out.println(date); }
下面是运行的debug截图。
上面的那个 日期和时间模式 是按我们常用的年月日时分秒来放的,下面传个别人的专业的图,供参考。
定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):
我写完文章,给自己点个赞,不过分吧,
不过分,那我可就点啦啊。
我先点为敬,你们随意。大家随意。不要客气。。。 -
日期时间规范
2020-06-20 18:17:57日期时间 【强制】日期格式化时,传入 pattern 中表示年份统一使用小写的 y。 说明:日期格式化时,yyyy 表示当天所在的年,而大写的 YYYY 代表是 week in which year(JDK7 之后 引入的概念),意思是当天所在的周...日期时间
- 【强制】日期格式化时,传入 pattern 中表示年份统一使用小写的 y。
说明:日期格式化时,yyyy 表示当天所在的年,而大写的 YYYY 代表是 week in which year(JDK7 之后
引入的概念),意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,返回的 YYYY
就是下一年。
正例:表示日期和时间的格式如下所示:
new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”) - 【强制】在日期格式中分清楚大写的 M 和小写的 m,大写的 H 和小写的 h 分别指代的意义。
说明:日期格式中的这两对字母表意如下:
1) 表示月份是大写的 M;
2) 表示分钟则是小写的 m;
3) 24 小时制的是大写的H;
4) 12 小时制的则是小写的 h。 - 【强制】获取当前毫秒数:System.currentTimeMillis(); 而不是 new Date().getTime()。 说
明:如果想获取更加精确的纳秒级时间值,使用 System.nanoTime 的方式。在 JDK8 中,针对统计时间等
场景,推荐使用 Instant 类。 - 【强制】不允许在程序任何地方中使用:1)java.sql.Date 2)java.sql.Time 3)
java.sql.Timestamp。
说明:第 1 个不记录时间,getHours()抛出异常;第 2 个不记录日期,getYear()抛出异常;第 3 个在构造
方法 super((time/1000)*1000),fastTime 和 nanos 分开存储秒和纳秒信息。
反例: java.util.Date.after(Date)进行时间比较时,当入参是 java.sql.Timestamp 时,会触发 JDK
BUG(JDK9 已修复),可能导致比较时的意外结果。 - 【强制】不要在程序中写死一年为 365 天,避免在公历闰年时出现日期转换错误或程序逻辑
错误。
Java 开发手册
12
正例:
// 获取今年的天数
int daysOfThisYear = LocalDate.now().lengthOfYear();
// 获取指定某年的天数
LocalDate.of(2011, 1, 1).lengthOfYear();
反例:
// 第一种情况:在闰年 366 天时,出现数组越界异常
int[] dayArray = new int[365];
// 第二种情况:一年有效期的会员制,今年 1 月 26 日注册,硬编码 365 返回的却是 1 月 25 日
Calendar calendar = Calendar.getInstance();
calendar.set(2020, 1, 26);
calendar.add(Calendar.DATE, 365); - 【推荐】避免公历闰年 2 月问题。闰年的 2 月份有 29 天,一年后的那一天不可能是 2 月 29
日。 - 【推荐】使用枚举值来指代月份。如果使用数字,注意 Date,Calendar 等日期相关类的月份
month 取值在 0-11 之间。
说明:参考 JDK 原生注释,Month value is 0-based. e.g., 0 for January.
正例: Calendar.JANUARY,Calendar.FEBRUARY,Calendar.MARCH 等来指代相应月份来进行传参或
比较。
- 【强制】日期格式化时,传入 pattern 中表示年份统一使用小写的 y。
-
new Date() 日期格式处理
2017-12-25 16:09:16console.log("result:"+toHDate(new Date().getTime()/1000).replace(/\:\d\d$/,'')); function toHDate(sec) { var d=new Date(); d.setTime(parseInt(sec)*1000); var str=d.getFullYear()+"-"+numFormDate 对象常用API
var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate.getMonth(); //获取当前月份(0-11,0代表1月) 所以获取当前月份是 myDate.getMonth()+1; myDate.getDate(); //获取当前日(1-31) myDate.getDay(); //获取当前星期X(0-6,0代表星期天) myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数) myDate.getHours(); //获取当前小时数(0-23) myDate.getMinutes(); //获取当前分钟数(0-59) myDate.getSeconds(); //获取当前秒数(0-59) myDate.getMilliseconds(); //获取当前毫秒数(0-999) myDate.toLocaleDateString(); //获取当前日期 var mytime = myDate.toLocaleTimeString(); //获取当前时间 myDate.toLocaleString( ); //获取日期与时间
JS获取当前时间戳的方法:
Date.parse(new Date()); // 不推荐; 毫秒改成了000显示 new Date().valueOf(); new Date().getTime(); +new Date().getTime();
js中单独调用
new Date();
显示这种格式Fri Aug 28 2020 11:03:24 GMT+0800 (中国标准时间)
但是用new Date()
参与计算会自动转换为从 1970.1.1 开始的毫秒数将字符串形式的日期转换成日期对象:
var strTime="2011-04-16"; // 字符串日期格式 var date= new Date(Date.parse(strTime.replace(/-/g, "/"))); // 转换成 Data(); new Date(); // 参数可以为整数; 也可以为字符串; 但格式必须正确 new Date(2009,1,1); new Date("2009/1/1"); new Date("2009-1-1"); new Date( year, month, date, hrs, min, sec) // 按给定的参数创建一日期对象
1.日期格式转为日期标准字符串:2015-03-19
var formatDate = function (date) { var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? '0' + m : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; return y + '-' + m + '-' + d; };
2.js方法返回值:2015-03-19 12:00:00
var formatDateTime = function (date) { var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? ('0' + m) : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; var h = date.getHours(); h=h < 10 ? ('0' + h) : h; var minute = date.getMinutes(); minute = minute < 10 ? ('0' + minute) : minute; var second=date.getSeconds(); second=second < 10 ? ('0' + second) : second; return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second; };
3.时间戳转为日期格式
//时间戳转日期格式 var formatDateTime3 = function(time, format){ var t = new Date(time); var tf = function(i){return (i < 10 ? '0' : '') + i}; return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function(a){ switch(a){ case 'yyyy': return tf(t.getFullYear()); break; case 'MM': return tf(t.getMonth() + 1); break; case 'mm': return tf(t.getMinutes()); break; case 'dd': return tf(t.getDate()); break; case 'HH': return tf(t.getHours()); break; case 'ss': return tf(t.getSeconds()); break; } }) };
4.时间格式字符串转为时间戳(毫秒)
var time1=‘2016-01-01 17:22:37’; var date=new Date(time1.replace(/-/g, '/')); //开始时间 var time2=date.getTime();
如何将2015-03-12 12:00 转换成标准时间()?
// 调用:parserDate("2015-03-19 12::00:00") var parserDate = function (date) { var t = Date.parse(date); if (!isNaN(t)) { return new Date(Date.parse(date.replace(/-/g, "/"))); } else { return new Date(); } };
转自不忘初心:http://blog.csdn.net/tomcat_2014/article/details/50514979
补充:
写一个vue plugin 用于格式化日期时间:export function prefixZero (num, n) { return (Array(n).join(0) + num).slice(-n); } /** * @param {String | Number} date 当前时间 * @param {String} format 格式化格式 * * usage: * dateFormatter('2011/1/12 12:12:22', 'yyyy-MM-dd HH:mm:ss') * dateFormatter(1294805542000, 'yyyy-MM-dd HH:mm:ss') */ export function dateFormatter (date, format) { const t = new Date(date) console.log(t) if (t.toString() === 'Invalid Date') { return 'invalid date' } return format.replace(/yyyy|MM|M|WW|W|ww|w|dd|d|HH|H|hh|h|mm|m|ss|s|A|a/g, function(a){ switch(a){ case 'yyyy': // 年 2011 return prefixZero(t.getFullYear(), 4); case 'MM': // 月 01 return prefixZero(t.getMonth() + 1, 2); case 'M': // 月 1 return t.getMonth() + 1; case 'WW': // 周 01 return prefixZero(t.getDay(), 2); case 'W': // 周 1 return t.getDay(); case 'ww': // 周 星期一 return "星期" + "日一二三四五六".charAt(t.getDay()); case 'w': // 周 周一 return "周" + "日一二三四五六".charAt(t.getDay()); case 'dd': // 日 02 return prefixZero(t.getDate(), 2); case 'd': // 日 2 return prefixZero(t.getDate(), 2); case 'HH': // 小时 24小时制 03 return prefixZero(t.getHours(), 2); case 'H': // 小时 24小时制 3 return prefixZero(t.getHours(), 2); case 'hh': // 小时 12小时制 03 return prefixZero(t.getHours() % 12, 2); case 'h': // 小时 12小时制 3 return prefixZero(t.getHours() % 12, 2); case 'mm': // 分钟 04 return prefixZero(t.getMinutes(), 2); case 'm': // 分钟 4 return t.getMinutes(); case 'ss': // 秒 05 return prefixZero(t.getSeconds(), 2); case 's': // 秒 5 return t.getSeconds(); case 'A': return t.getHours() < 12 ? 'AM' : 'PM'; case 'a': return t.getHours() < 12 ? 'am' : 'pm'; } }) } const dateFormat = { install: function (vue) { vue.prototype.$dateFormatter = dateFormatter vue.filter('date', dateFormatter) } } export default dateFormat
-
MySQL 日期和时间戳的转换 | 以及DATE_FORMAT()用法
2018-12-25 17:47:53一、MySQL 日期和时间戳的转换 1.日期转时间戳 select UNIX_TIMESTAMP('2018-12-25 12:25:00'); 结果:1545711900 2.时间戳转日期:FROM_UNIXTIME(unix_timestamp) --unix_timestamp为时间戳 select FROM_...
给自己做个记录
一、MySQL 日期和时间戳的转换
1.日期转时间戳 -- 转十位 select UNIX_TIMESTAMP('2018-12-25 12:25:00'); 结果:1545711900 -- 转十三位 SELECT REPLACE(unix_timestamp(current_timestamp(3)),'.',''); 结果:1545711900021 2.时间戳转日期:FROM_UNIXTIME(unix_timestamp) --unix_timestamp为时间戳 select FROM_UNIXTIME(1545711900); 结果:2018-12-25 12:25:00 3.时间戳转日期,自定义返回日期格式:FROM_UNIXTIME(unix_timestamp,format) -- format请参考后面的截图 select FROM_UNIXTIME(1545711900,'%Y-%m-%d %T'); -- 结果:2018-12-25 12:25:00
二、DATE_FORMAT(date,format)函数用于以不同的格式显示日期/时间数据
- date 参数是合法的日期。format 规定日期/时间的输出格式
- 可以使用的格式有
示例:
select DATE_FORMAT(NOW(), '%Y-%m-%d %T'); 结果:2018-12-25 12:25:00
-
java工具类(五)之日期格式字符串与日期实现互转
2015-08-12 17:02:06JAVA字符串转日期或日期转字符串 项目开发过程中需要实现日期格式的字符串与日期进行互转,并进行日期的加减操作。 Demo如下: package weiming.lmapp.utils; import java.text.ParseException; import java.... -
MySQL中日期时间类型与格式化
2016-12-01 11:09:12Datetime : 时间日期型,格式是YYYY-mm-dd HH:ii:ss,表示的范围是从1000到9999。但是有零值,0000-00-00 00:00:00;Date:日期,就是datetime中的date部分;Time:时间(段),指定的某个区间之间,从-时间到+时间(有... -
java时间戳与Date相互转换、日期格式化、给日期加上指定时长、判断两时间点是否为同一天
2018-05-31 23:20:44日期格式化 给日期加上指定时长 得到指定时间节点的Date 1、时间戳转Date 注:以下的方法中很多常量和方法我都没有提取出来,正式项目中还是建议大家封装在时间处理类中,规范化操作 public... -
HTML 选择浏览器自带日期控件
2019-08-06 09:59:28在HTML5之前,对于这样的页面需求,最常见的方案是用Javascript日期选择组件。这几乎是无可争议、别无选择的做法。...大部分这些日期选择组件都提供将日期填充到指定的输入框里的功能。 HTML5里的dateinp... -
TypeScript日期工具: date-fns日期工具的使用方法
2019-01-03 19:42:24的日期工具库.如果不翻墙,是看不到官方文档的,国内文档又很少.以下总结内容为我在最近的一次开发项目中使用. 该使用方法是在angualr5.0环境中使用的. 使用typescript. 函数名 作用 isToday() ... -
elementUI中日期插件如何设置默认日期为当前日期 el-date-picker设置默认日期方法
2019-09-24 14:34:47el-date-picker组件中设置默认日期为当前日期方法 html: <el-form-item label="调拨日期:" prop="stockDate"> <el-date-picker :clearable="true" v-model="info.stockDate" type="date" ... -
SpringBoot日期格式转换,SpringBoot配置全局日期格式转换器
2020-12-04 12:31:10SpringBoot设置后台向前台传递Date日期格式 在springboot应用中,@RestController注解的json默认序列化中,日期格式默认为:2020-12-03T15:12:26.000+00:00类型的显示。 在实际显示中,我们需要对其转换成我们需要... -
java日期增加一个月或减少一天
2017-04-13 15:56:24java日期增加一个月或减少一天; 增加或减少月份及天数; -
java如何获取当前日期和时间
2019-06-12 18:11:36本篇博客主要总结java里面关于获取当前时间的一些方法 System.currentTimeMillis() 获取标准时间可以通过System.currentTimeMillis()方法获取,此方法不受时区影响,得到的结果是时间戳格式的。... -
Pycharm创建文件时自动生成文件头注释(自定义设置作者、日期等信息)
2020-08-04 19:24:07为了不用每次新建文件时都要手动添加作者、创建日期等信息,我们可以为Pycharm设置一套模板(IDEA设置也可以参考Pycharm),提高效率。 -
【ElementUI】日期选择器时间选择范围限制,根据接口灵活设置可选时间。只能选今天之前的时间,或者是只能...
2018-11-08 09:59:19<el-date-picker v-model="...选择日期" :picker-options="pickerOptions0"> </el-date-picker> 选择今天以及今天之后的日期 data (){ return { -
django日期过滤
2018-12-05 14:07:01# 统计日期:start_date,end_date start_date = self.request.query_params.get('start_date') end_date = self.request.query_params.get('end_date') if start_date and end_date: try: query... -
easyui datebox日期控制扩展选择日期小于等于当前日期,开始日期小于等于结束日期
2017-08-03 10:51:43//日期控制扩展选择日期小于等于当前日期,开始日期小于等于结束日期 $("#datebox1").datebox('calendar').calendar({ validator:function(beginDate){ var date = new Date(); return beginDate ; } }... -
JS判断当前日期必须大于选择日期
2019-04-16 15:45:59有时候我们需要JS校验判断当前日期必须大于选择日期,这个怎么实现呢? -
微信小程序----日期时间选择器(自定义精确到分秒或时段)(MUI日期时间)
2017-12-28 13:52:40DEMO下载 效果图 实现原理 利用微信小程序的picker组件的多列选择器实现! WXML view class=&quot;tui-picker-content&quot;&... pi -
bootstrap 日期控件起始日期&结束日期相互约束
2016-04-22 16:42:56引入控件使用bootstrap的日期控件需要单独引入bootstrap-datetimepicker.min.css和bootstrap-datetimepicker.min.js 详情及文件可以通过下面地址下载:... -
Scala实现--获取两个日期至今的所有日期包括开始日期和结束日期
2018-08-17 11:47:08获取两个日期至今的所有日期包括开始日期和结束日期: /** * 获取两个日期之间的日期 * @param start 开始日期 * @param end 结束日期 * @return 日期集合 */ def getBetweenDates(start: String, end: ... -
HTML5新控件 - 日期和时间选择输入
2018-05-23 17:02:42支持日期控件的浏览器会提供一个方便的下拉式日历,供用户选择。注意:我测试了Chrome和Opera,火狐提供下拉式日历支持,其它浏览器可能仍是一个普通文本框。1,日期控件 - date<input type="date"... -
php 获取开始日期与结束日期之间所有日期
2016-06-23 19:55:26本文提供一个方法,可以获取开始日期与结束日期之间所有的日期,并放入数组保存。 -
日期计算器
2018-09-13 13:29:322.两个日期之间间隔的天数,日期-日期=返回的天数(处理:返回的天数不能为负) 3.打印某年某月本月的日历(处理:1982年十月份) 二 功能分析 三 项目测试点: 功能测试: (1)对输入日... -
[142]python获取日期加减之后的日期
2018-06-24 00:17:40python语言中的datetime模块可以利用其中的方法获取不同的日期,比如获取当前日期、明天、昨天、上个月、下个月和明年。下面利用几个实例说明这些日期的获取方法,操作如下: 第一步,利用datetime模块获取当前... -
java获取两个日期之间的所有日期(包括开始日期和结束日期)
2019-06-18 11:29:03java获取两个日期之间的所有日期集合 解决方法: import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import org... -
java工具类(四)之实现日期任意跳转
2015-08-12 16:58:27Java实现日期任意跳转 项目开发过程中,需要进行订单提醒日期的设置,主要包括设置每月指定的日期或者指定的天数,代码如下: public static String DateOperation(String type, Date myDate, int num) { String... -
Java SimpleDateFormat进行日期格式化
2017-10-27 16:58:35一,为啥要用SimpleDateFormat众所周知,Java中的日期类是Date,然后日期默认的输出样式很奇怪哦,是这样子的:package org.maoge.common; import java.util.Date; public class SimpleDateFormatDemo { public ... -
UDF函数返回给定日期的月初日期
2018-04-21 17:38:04需求:给定一个日期,返回该日期的当月月初日期import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.hadoop.hive.ql.exec.... -
日期转化为时间戳,英文的日期转为日期格式
2017-08-14 10:32:41该文章介绍怎么将中文年月日的日期转为时间戳,英文格式的时间转为中文日期的yyyy-MM-dd格式,然后调用方法再转为时间戳 在项目开发中有用到所以记录下来,转化给日期格式之后转为时间戳 // 中文日期时间戳 传参...
-
基于javaweb的在线购物系统的设计与实现.zip
-
基于bs的企业考勤管理系统.zip
-
【2021】UI自动化测试Selenium3
-
前端性能优化
-
孙哥说Spring5代码.zip
-
美国总统拜登的总统宣言的观后感:团结就是力量!
-
第1章 Java入门基础及环境搭建【java编程进阶】
-
欧美美酒销售介绍网页模板
-
单片机中数据表格在存储器哪一个地方?为什么仿真时候反汇编看不出表格数据,例如 398液晶仿真
-
房产交易资源中心响应式网页模板
-
TCP/IP 三次握手与四次挥手的理解
-
算法面试专题课(Java版)
-
Java学习路线,好的学习路线和好的方法,能让我们少走些弯路
-
2021-01-22
-
托儿所信息网页模板
-
C#文件传输、Socket通信、大文件断点续传
-
量化高频交易系统tick数据采集
-
FPGA - 基于FPGA的HDMI显示
-
ANSYS_Fluent_Users_Guide.zip
-
MFC开发简单聊天程序