文中输出的时间,都是相同的,便于读者观看。
Date转Timestamp 1 2 3 4 5 Date date = new Date(); long currentMillis = date.getTime()System.out.println(currentMillis); 1578064861125
java.util.Date
, 这个类跟时区是无关的。
Timestamp转Date 1 2 3 4 5 long timeMillis = System.currentTimeMillis();Date date = new Date(timeMillis); System.out.println(date); Fri Jan 03 23 :21 :01 CST 2020
Date转日期字符串 当我们打印出Date时,显示的时间,就是带有时区的字符串了。那为什么是CST(China Standard Time)呢?
1 2 3 4 String timeZoneId = TimeZone.getDefault().getID(); System.out.println(timeZoneId); Asia/Shanghai
发现系统默认的时区id为Asia/Shanghai
。
如何查看有哪些时区id呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 String[] availableIDs = TimeZone.getAvailableIDs(); for (String availableID : availableIDs) { System.out.println(availableID); } Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers ... Asia/Shanghai Asia/Singapore Asia/Srednekolymsk Asia/Taipei
如果我们想查看日本东京的时间呢?
1 2 3 4 5 6 7 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS Z" ); sdf.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo" )); String dateStr = sdf.format(date); System.out.println(dateStr); 2020 -01 -04 00 :21 :01.125 +0900