时间
- 时区、冬令时和夏令时、时间戳
1986年-1991年,存在夏令时,时间拨快一个小时。
时间戳:距离历史上一个标准参照时间经历过的毫秒数。绝对值,无关夏令时等。
标准时间:1970-01-01 00:00:00;2001-01-01 00:00:00(苹果) - 格威林治时间,CET,UTC,GMT,CST
格威林治时间:世界时,本初字母线的标界线的时间。
GMT:格威林治时间
UTC:协调世界时,主要的时间标准,原子时秒长为基础,
CET:欧洲中部时间,比时间时少一个小时
CST:中央标准时间 - Java时间API
Util.Date:能够精确到毫秒级
Sql.Date:数据库日期API,操作日期,不能读取和修改时间
Sql.Time:数据库时间类,获取操作时间。
Sql.Timestamp:纳秒级Util.Date
System.currentTimeMillis():获取时间,绝对中立,公立
System.nanoTime();纳秒级时间,但这个时间是JVM提供的时间,一般只用来衡量两个时间断。 - SimpleDateFormat线程安全问题
SimpleDateFormat:用来格式化时间,对日期字符串进行解析和格式化输出。线程不安全。主要因为SimpleDateFormat继承于DateFormat,而DateFormat,使用成员变量传值,其Calendar在多个方法中调用,Format和subFormat都使用了DateFormat的成员变量Calendar. - Java 8 对时间的处理
引入新类java.time:线程安全,不可变。主要类:
Instant:时间戳
LocalDate:不包含具体时间的日期,2014-01-01。存入职时间这些。
LocalTime:不包含日期的时间
LocalDateTime:包含时间于日期,但无时区偏移
ZonedDateTime:完整时间,偏移量以GMT和UTC为准。 - 如何在东八区的计算器获取美国时间
获取城市的当前时区
Calendar now = Calendar.getInstance();
now.setTimeZone(TimeZone.getTimeZone(“Asia/Shanghai”));