1,Date
java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
第一个构造函数使用当前日期和时间来初始化对象。
Date( )
第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
Date(long millisec)
两个函数会返回相同的对象,例如Fri May 31 14:39:30 GMT+08:00 2019
我们比较常用的方法为
long getTime( )
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数,可以用来比较日期大小
2,SimpleDateFormat
一般直接用new Date获取的日期时间可用性不强,需要使用 SimpleDateFormat 格式化日期
SimpleDateFormat ft = new SimpleDateFormat (“yyyy-MM-dd HH:mm:ss”);
ft.format(new Date( ));
得到结果为:2019-05-31 14:39:30,还可以只用"yyyy-MM-dd"得到日期字符串,然后调用equals来比较是否为当天。
注意yyyy-MM-dd HH:mm:ss中的大小写,HH为大写为24小时制,小写为12小时制。
SimpleDateFormat类不仅可以将Date对象格式化为字符串,还可以将输入的字符串日期转化为Date对象
SimpleDateFormat ft = new SimpleDateFormat (“yyyy-MM-dd HH:mm:ss”);
Date dd = ft.parse(time);
3,Calendar
Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。可以用以下方法获取当前日期是星期几。
public static int dayForWeek(String pTime) {
int dayForWeek = 0;
try {
SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Calendar c = Calendar.getInstance();
c.setTime(format.parse(pTime));
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
dayForWeek = 7;
} else {
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
}
} catch (ParseException e) {
e.printStackTrace();
}
return dayForWeek;
}
类似的Calendar方法还有
Calendar.YEAR 年份
Calendar.MONTH 月份
Calendar.DATE 日期
Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同
Calendar.HOUR 12小时制的小时
Calendar.HOUR_OF_DAY 24小时制的小时
Calendar.MINUTE 分钟
Calendar.SECOND 秒
Calendar.DAY_OF_WEEK 星期几
注:当调用c1.set(年, 月, 日);Calender的月份是从0开始的,但日期和年份是从1开始的
日期设为0表示上个月的最后一天,如果是负数则表示上个月天数加上这个负数;
月份也可以是负数,规则与日期一样;
实测将年份设为非正数时,会自动变为绝对值+1,不知其意义。
再补充一点javaScript中怎么把格式化日期转化为ms:
function stringToTimeSquence(str) {
console.log(str);
str = '2016-3-18' + ' ' + str;
console.log(str);
str = str.replace(/-/g,'/');
console.log(str);
let date = new Date(str);
return date.getTime();
}
var time = stringToTimeSquence('15:55:52');
console.log(time);
输出结果为:
15:55:52
2016-3-18 15:55:52
2016/3/18 15:55:52
1458287752000
需要将日期中的-转化为/,否则Date函数不认识,会返回Invalid Date,date.getTime会返回NaN