我有一个日历对象,它在UTC时区。我想将日历对象中的日期和时间转换为PST,同时牢记所有的DST。我期待写一个辅助函数具有以下签名:日历对象时区转换
private Calendar getPSTTime(Calendar utcTime)
{
}
我有一个日历对象,它在UTC时区。我想将日历对象中的日期和时间转换为PST,同时牢记所有的DST。我期待写一个辅助函数具有以下签名:日历对象时区转换
private Calendar getPSTTime(Calendar utcTime)
{
}
private Calendar getPSTTime(Calendar utcTime)
{
TimeZone americaPacific = TimeZone.getTimeZone("America/Los_Angeles");
Calendar pacificTime = Calendar.getInstance(americaPacific);
pacificTime.setTime(utcTime.getTime());
return pacificTime;
}
FYI:所有可用的时区字符串标识符是由法TimeZone.getAvailableIDs()
返回。这就是我从"America/Los_Angeles"
。
这是我尝试的第一件事。这样做只会设置UTC时间。它不会将时间转换为PST。谢谢。 – supreethmurthy 2013-02-09 00:36:15
@ user2055876试试'TimeZone.getTimeZone(“PST”);'。此外,你是如何检查这种方法不起作用的(对我而言,它工作正常)?常见的错误是人们通过打印'calendar.getTime()'来检查它,该日历基于存储在日历中的毫秒返回'new Date(milis)',忘记'Date'使用默认语言环境。要检查日历是否正确转换,直接从它获取值,如'calendar.get(Calendar.HOUR_OF_DAY);'。 – Pshemo 2013-02-09 01:21:41
在Java中时间事件被存储为这个事件和1970年1月1日之间的毫秒数,00:00:00 GMT(例如,如果这些事发生在伦敦)
所以每当我们谈论的日期和时间在Java中,由java.util.Date或java.util.Calendar表示,我们总是讨论绝对编号,而不考虑时区。
时区只有在我们尝试以字符串形式输出日期/时间时才有意义。在我的头顶,我可以记得做这件事的方法有两种:
实在是在Java的“时区转换”没有这样的事,但时区特定的格式。
但是,如果你想使事情真的令人困惑,您可以添加“修正”到您的日历时间值,这样它会返回字段的值,如果它是在PST时区:
private Calendar getPSTTime(Calendar utcTime)
{
TimeZone pstZ = TimeZone.getTimeZone("America/Los_Angeles");
long offset = pstZ.getOffset(utcTime.getTime());
Calendar pacificTime = Calendar.getInstance();
pacificTime.setTimeInMillis(utcTime.getTimeInMillis()-offset);
return pacificTime;
}
有没有标题中需要说“Java编程语言”;你已经包含了一个标签,而标签系统在这里工作得很好,没有任何帮助。您可以使用标签提供的任何信息在主题中都不是必需的,您可以使用该空间来更好地描述您的问题。 (你通常应该实际上*提出一个问题*而不是仅仅指出一个目标,并且显示你在实际解决问题时已经做出了一些努力。) – 2013-02-08 23:54:05
也是一个[如何使用Java处理日历时区的问题?]( http://stackoverflow.com/q/230126/62576),[将UTC时间转换为Java中的本地时区](http://stackoverflow.com/questions/3010035/converting-a-utc-time-to - 在Java本地时区)?,[从UTC日期转换为Java到PST](http://stackoverflow.com/questions/6075912/converting-date-from-utc-to-pst- in-java?rq = 1)等等。在发布问题之前,请至少进行一次基本搜索,以查看问题是否已被问及并回答。我链接的部分链接位于右侧的“相关”列表中。谢谢。 – 2013-02-08 23:57:28
我确实在寻找现有的帖子。它没有帮助我。我的问题是具体的。另外,我不知道我能更好地描述这个功能。我已经给了方法签名。编写java代码的人应该明白我想要实现的目标。 – supreethmurthy 2013-02-09 00:34:56