写了这么多年DateUtils,殊不知你还有这么多弯弯绕!
大家好,我是哪吒。
因此在使用时间时,一定要给出时区信息。
public static void getDataByZone(String param, String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
// 默认时区解析时间表示
Date date = sdf.parse(param);
System.out.println(date + ":" + date.getTime());
// 东京时区解析时间表示
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
Date newYorkDate = sdf.parse(param);
System.out.println(newYorkDate + ":" + newYorkDate.getTime());
}
public static void main(String[] args) throws ParseException {
getDataByZone("2023-11-10 10:00:00","yyyy-MM-dd HH:mm:ss");
}
对于当前的上海时区和纽约时区,转化为 UTC 时间戳是不同的时间。
对于同一个本地时间的表示,不同时区的人解析得到的 UTC 时间一定是不同的,反过来不同的本地时间可能对应同一个 UTC。