我正在寻找一种根据用户输入获取各个时区的当前时间的方法。我知道我可以使用乔达时间 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(使用前将#替换为@)