java - 时区转换和日期显示不正确

标签 java calendar timezone

Calendar cal= Calendar.getInstance();
System.out.println(cal.getTimeZone().getID());
cal.set(2012, 8, 21);
java.util.Date d = new java.util.Date();
System.out.println(d.toString());

//System.setProperty("user.timezone", "America/Chicago");

//  System.out.println(TimeZone.getDefault().getID());

TimeZone tz1 = TimeZone.getTimeZone("Africa/Algiers");
//tz1.setDefault(tz1);

cal.setTimeZone(tz1);
System.out.println(cal.getTimeZone().getID());

//cal.set(2012, 8, 21);
System.out.println(d.toString());

输出是--

Asia/Calcutta
Tue Aug 21 11:35:06 IST 2012
Africa/Algiers
Tue Aug 21 11:35:06 IST 2012

我想要当前时区格式的时间,但它以 IST 格式给出。如何做到这一点。

最佳答案

编辑:我刚刚注意到您给出的代码甚至没有调用cal.getTime()。您完全忽略日历中的值。无论如何,它不会执行您想要的操作,但您要打印的值只是 new Date()...您希望日历如何参与其中?

I want the time in the currrent timezone format but it is giving in IST. How to do this.

首先避免使用Date.toStringDate 值没有时区的概念,因此 toString 始终仅使用系统时区。更改日历的时区而不再次调用 set 也不会更改基础值。

现在有两个选择:

  • 使用 SimpleDateFormat,在格式化之前指定时区
  • 使用Joda Time相反,它首先是一个更丰富的日期和时间 API

我个人强烈建议您使用后一个选项,特别是当您进行大量日期/时间操作时。 DateCalendarSimpleDateFormat 只是不允许您编写能够清楚表达您在任何时间点拥有的数据的代码。

关于java - 时区转换和日期显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12049196/

相关文章:

Java - MVC 模式 - 绘制和克服空指针异常

javascript - amCharts - 如何使用非英语日历?

python - 如何在更改 TIME_ZONE 设置时保持 UTC 时间记录?

java - Jar 到 exe 的问题,类路径的理解

java - 无法在Maven中的Oozie-hadoop项目上执行目标以安装Oozie

java - Python(和Java)中最快的数据打包

java - 自定义 Joda-Time Chronologies 是否有好的资源?

jquery - 如何在 jquery datepicker 中显示一天的事件

c - C中打印不同时区的当前时间

c++ - 打印处理程序时经过的总时间