在 Java 中使用各种日历时区(不使用 Joda Time)

2023-12-22

我正在寻找一种根据用户输入获取各个时区的当前时间的方法。我知道我可以使用乔达时间 http://joda-time.sf.net/!但这是唯一的方法吗?

Java 中没有一个选项可以做到这一点吗?我尝试了以下代码,它为所有 3 个系统输出提供了相同的输出。

Calendar pst = Calendar.getInstance(TimeZone.getTimeZone("PST"));
System.out.println("PST " + pst.getTime());
Calendar ist = Calendar.getInstance(TimeZone.getTimeZone("Asia/Calcutta"));
System.out.println("IST " + ist.getTime());
Calendar utc = Calendar.getInstance(TimeZone.getTimeZone("Etc/UTC"));
System.out.println("UCT " + utc.getTime());

为了获取其他时区的当前时间,我缺少什么?


是的,在每种情况下(或间隔毫秒)都会显示相同的值,因为三个日历都引用相同的值瞬间(尽管执行时间)这就是全部java.util.Date代表。这就是结果Calendar.getTime().

但是,那Calendar itself does了解时区,这将在您使用时反映出来Calendar.get等等。它会also当您使用SimpleDateFormat,您可以在其中指定特定时区。

// Specify whatever format you want - bear in mind different locales etc
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
format.setTimeZone(calendar.getTimeZone());
String text = format.format(calendar.getTime());

目前尚不清楚您到底想要做什么,但基本上您需要知道哪些类型是时区感知的,哪些不是。理解这一点非常重要java.util.Date没有格式、日历系统或时区:它是just自 Unix 纪元以来的毫秒数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中使用各种日历时区(不使用 Joda Time) 的相关文章

随机推荐