1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 日期时间戳 Java之时间戳 Date(日期) Calendar(日历) 时间转换和Date格式化...

java 日期时间戳 Java之时间戳 Date(日期) Calendar(日历) 时间转换和Date格式化...

时间:2022-06-24 14:41:20

相关推荐

java 日期时间戳 Java之时间戳 Date(日期) Calendar(日历) 时间转换和Date格式化...

概念

时间原点概念

所有的数据类型,无论是整数,布尔,浮点数还是字符串,最后都需要以数字的形式表现出来。

日期类型也不例外,换句话说,一个日期,比如10月1日,在计算机里,会用一个数字来代替。

那么最特殊的一个数字,就是零. 零这个数字,就代表Java中的时间原点,其对应的日期是1970年1月1日 8点0分0秒 。 (为什么是8点,因为中国的太平洋时区是UTC-8,刚好和格林威治时间差8个小时)

为什么对应1970年呢? 因为1969年发布了第一个 UNIX 版本,综合考虑,当时就把1970年当做了时间原点。所有的日期,都是以为这个0点为基准,每过一毫秒,就+1。

时间戳

简单讲,时间戳就是从1970-01-01开始所经过的秒数,什么时候获取时间戳,就是到那个时间点所经历的毫秒数。

说明:时间戳在Java中是13位,应该是代表的毫秒数,PHP和Python中是10位,应该是代表的秒数。

时区(TimeZone)和地区(Locale)

时区:这个名称有点不准确,其实应该叫“时间体系和偏移量”。

时间体系有很多种,古时中国人喜欢用皇帝名+登基时间来表示时间,这也是一种时间体系。现在比较常用的时间体系是GMT和UTC。GMT也就是格林威治时间,也叫格林尼治时间,从1970-01-01 00:00:00开始计算。UTC是在GMT基础上设计的,两者误差很小,作为凡人可以忽略。如果是要求很高的军工行业,则请查阅其他资料吧。

地区:所属地区。在中国一个星期的第一天是星期一,在西方第一天是星期日,这个小细节不注意可能会导致计算星期的时候出问题。

一、时间戳

System.out.println(new Date().getTime());

System.out.println(System.currentTimeMillis());

输出结果:

1578971073649

1578971073649

二、Date

1、创建一个当前时间的Date对象

Date date = new Date();

System.out.println("timestamp: "+date.getTime());

System.out.println("Date: "+new Date(date.getTime()));

输出结果:

timestamp: 1578970061366

Date: Tue Jan 14 10:47:41 CST

2、创建一个我们指定的时间的Date对象:

使用带参数的构造方法Date(int year, int month, int day) ,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。

Date date1 = new Date(-1900,6-1,12);

String date1Str = TimeUtil.msToDate(date1.getTime());

System.out.println(date1Str);

输出结果:

-06-12 00:00:00

三、Calendar(日历)

(1)获取Calendar实例的四种方式

1.getInstance():使用默认的时区、默认的位置创建实例

2.getInstance(TimeZone zone):使用指定的时区、默认的位置创建实例

3.getInstance(Locale aLocale):使用默认的时区、指定的位置创建实例

4.getInstance(TimeZone zone,Locale aLocale)使用指定的时区、指定的位置创建实例

Calendar c1 = Calendar.getInstance();

Calendar c2 = Calendar.getInstance(Locale.CHINA);

Calendar c3 = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));

Calendar c4 = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);

(2)

add/set/roll方法区别

1.add方法:按照指定的时间单位向前/向后推移,会计算得到实际值

2.set方法:设置指定的时间单位,会计算得到实际值

3.roll方法:按照指定的时间单位向前/向后推移,不修改较大的时间单位,只会修改指定的时间单位

roll(int,int)和roll(int,boolean)的区别

1.roll(int,int):支持向前/向后推移多个时间单元

2.roll(int,boolean):向前/向后推移一个时间单元

set方法的四种不同参数形式的区别

1.set(int filed,int value):在指定时间单位设值

2.set(int year,int month,int day):给年、月、日时间单位设值

3.set(int year,int month,int day,int hourOfDay,int minute):给年、月、日、时、分单位设值

4.set(int year,int month,int day,int hourOfDay,int minute,int second):给年、月、日、时、分、秒单位设值

before/after方法区别

1.before:时间做比较,是否在该时间之前

2.after:时间做比较,是否在该时间之后

Calendar的一个例子:

Calendar calendar = Calendar.getInstance();

System.out.println("time: "+calendar.getTime());

System.out.println("long_time: "+calendar.getTimeInMillis());

System.out.println("TimeZone: "+calendar.getTimeZone());

System.out.println("year:"+calendar.get(Calendar.YEAR));

System.out.println("month:"+cal

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。