日期Date
时间原点,其对应的日期是北京时间 1970年1月1日 8点0分0秒
所有的日期,都是以为这个0点为基准,每过一毫秒,就+1。
不带参数的Date()是初始化为现在的系统时间
getTime() 得到距离1970.1.1 08:00:00:000 的毫秒数 (可读性差)
DateFormat类
是一个抽象类,可以通过 该类中的static方法 getDateInstance() 来得到实例对象
还有getDateTimeInstance()来得到时间日期对象
其中format(Date对象)方法就是格式化日期
getDateInstance(style,locale)
var i=DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","CN"));设置格式以便中国的阅读方式
但这还是系统自带的默认的,如果你想要格式化为你自己想要的 格式的话要用到DateFormat的子类 SimpleDateFormat
SimpleDateFormat
在实际的开发中常用SimpleDateFormat将String转换为Date
日期格式化模板标记
y年 M月 d天 H小时 m分钟 s秒 SSS毫秒
其实这里 的y啊m之类的个数只是 规定了 对应的数字个数
如果 y 的数量大于年份的数字数量::yyyyy 的年份是2022年的话 那么 就是02022年会 添加0补齐
如果 y 的数量小于年份的数字数量::y的年份是2022年的话 那么就还是2022年不变
日期转字符串
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
Date d= new Date();
String str = sdf.format(d);
System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );
Date d1= new Date();
String str1 = sdf1.format(d1);
System.out.println("当前时间通过 yyyy-MM-dd 格式化后的输出: "+str1);
也可以这样 String format="yyyy/MM/dd HH:mm:ss";
Date d=new Date();
System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+format.formatted(d));
字符串也带有一个方法将Data格式输出
字符串转日期
String str = "2016/1/5 12:12:12";
SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
Date d = sdf.parse(str);
日历Calendar
采用单例模式获取日历对象Calendar.getInstance();
x.after(y) 比较x是否在y之后
x.before(y) 比较x是否在y之前
注意 这里的x和y 可以为Date或Calendar类,但只能相同的类的对象比较
通过日历对象得到日期对象 Date d = c.getTime();
// 下个月的今天
c.setTime(now);
c.add(Calendar.MONTH, 1);
// 去年的今天
c.setTime(now);
c.add(Calendar.YEAR, -1);
// 上个月的第三天
c.setTime(now);
c.add(Calendar.MONTH, -1);
c.set(Calendar.DATE, 3);