我目前正在尝试创建一个java Date,无论我在哪个时区查看它都看起来都一样。我目前的代码是:
Calendar cal = Calendar.getInstance();
cal.set(2015, Calendar.JANUARY, 8, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
Date date = cal.getTime();
在我目前的时间区域,这给了我'2015-01-08T00:00:00Z'在另一个这给了我2015-01-08T00:00:00-03:00。我想知道的是,如果有任何方法可以删除时区部分,以便两个时区的时间相同。
我非常感谢你对此事的任何帮助。谢谢。
答案 0 :(得分:2)
Java SE 8附带了一个新的Date&时间API。请查看LocalDate
和LocalDateTime
。
答案 1 :(得分:0)
如果您只对时间格式感兴趣,请创建一个java.text.SimpleDateFormat对象,以您希望的格式打印您的时间。 http://docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html
如果您想要时间打印相同的数字,无论TimeZone, 使用String ids [] = java.util.TimeZone.getAvailableIDs(); 获取TimeZone的ID并找到您想要的ID。
在这个例子中,我创建了两个设置为两个不同TimeZones的SimpleDateFormat对象。它们都打印出相同的Calendar对象。我已经在ft2中取下了Z来移除时区部分。依靠toString(),我认为你在显示日期时会受到Locale差异的影响,比如US MM / dd / yyyy和UK dd / MM / yyyy。
TimeZone tz = TimeZone.getTimeZone("America/New_York");
TimeZone tz2 = TimeZone.getTimeZone("America/Chicago");
Calendar acal = new GregorianCalendar();
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd'T'hh:mm:ss Z");
ft.setTimeZone(tz);
SimpleDateFormat ft2 = new SimpleDateFormat ("yyyy-MM-dd'T'hh:mm:ss");
ft2.setTimeZone(tz2);
String date1 = ft.format(acal.getTime());
System.out.println(date1);
String date2 = ft2.format(acal.getTime());
System.out.println(date2);
输出:
2015-01-08T10:36:39 -0500
2015-01-08T09:36:39