廖雪峰Java7处理日期和时间-1概念-1日期和时间
1.日期
日期是指某一天,如2016-11-20,2018-1-1
2.时间有2种:
- 不带日期的时间:14:23:54
- 带日期的时间:2017-1-1 20:21:23,唯一确定某个时刻
3.时区
时区:全球有24个时区。以英国格林尼治天文台为0度经线。每个时区横跨经度15度。相邻两个时区的时间相差1小时。
计算:区时 = 已知区时 - (已知区时的时区 - 要计算区时的时区)
东时区为正,西时区为负
如:已知北京(东八区)时间为5月1日12:00,求纽约(西五区)的区时。
纽约时间=12:00-[8-(-5)]=-1:00+24:00-1天=23:00(即纽约时间为4月30日的23:00)
没有时区标示的一般某个时刻指的是本地时间
时区的表示方式:
- GMT+08:00 东八区
- UTC+08:00 东八区。UTC和GMT基本等价,只是UTC采用原子钟计时。每隔几年,有个闰秒。
- CST China Standard Time/Central Standard Time USA。代表中国标准时间,也可以是美国中部标准时间,不要使用
- Asia/Shanghai 地区/城市
4.夏令时
夏令时开始时向前调快1小时,结束时恢复正常,即向后调整1小时。
北京当地时间2016-11-20 8:15,纽约当地时间2016-11-20 19:15
北京当地时间2016-6-20 8:15,纽约当地时间2016-6-20 20:15
按照城市时间会出现夏令时换算;使用GMT/UTC避免夏令时换算弊端。
2016-11-20 | 2016-6-20 | |
---|---|---|
GMT-05:00 | 19:00 | 19:00 |
UTC-05:00 | 19:00 | 19:00 |
America/New York | 19:00 | 20:00 |
5.地区/Locale
Locale表示一个国家或地区的日期、时间、数字、货币等格式:
- zh_CN:2016-11-30
- en_US:11/30/2016
计算机用Locale在日期、时间、货币和字符串之间进行转换:
中国用户 | 美国用户 | |
---|---|---|
购买价格: | ¥10077 | $1,500 |
购买日期: | 2016-11-20 | 11/30/2016 |
6.总结
- 理解日期、时间和时刻
- 理解时区的概念
- 理解夏令时、同一地区用GMT/UTC和城市表示的时区可能导致时间不同
* GMT-05:00
* America/New York - 理解Locale用来针对当地用户习惯格式化日期、时间、数字、货币等