java - 如何根据时区的字符串值转换日期

标签 java date

我有一个日期对象,我需要将其转换为登录用户的时区。问题是时区在我们的数据库中仅表示为 GMT 的字符串值加上或减去以小时为单位的偏移量。例如,纽约时间的“GMT”或“GMT-5”或“GMT+5”。

当我只有“GMT-3”或“GMT+5”之类的字符串时,如何将我的日期对象转换为用户的时间?

在此先感谢您的帮助。

最佳答案

一个例子应该有帮助,但它似乎是一个 1 字符 ISO 8601 time zone :

String myDate="2001-07-04T12:08:56GMT-3";

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'GMT'X");

if (myDate.indexOf("GMT-") >= myDate.length() -1 -4) {
    myDate = myDate.replace("-","-0");
}
if (myDate.indexOf("GMT+") >= myDate.length() -1 -4) {
    myDate = myDate.replace("+","+0");
}

System.out.println(format.parse(myDate));

它应该可以工作。

  • yyyy-MM-dd'T'HH:mm:ss'GMT'X 符合 iso8601 时区
  • myDate = myDate.replace("-","-0"); 将日期调整为您的格式

关于java - 如何根据时区的字符串值转换日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21648923/

相关文章:

java - 如何将 JDateChooser 格式化为 dd-mm-yyyy?

date - 如何在批处理文件中获取昨天的日期?

ruby-on-rails-3 - 更改年份以在Rails中更改日期

java - Scala 将很长的字符串解析为日期

java - jquery/Angular 调度器实现

java - 使用 Hibernate JPA for Oracle 创建表抛出错误

javascript - 在 Bootstrap Datepicker 中设置最小日期

java - 为什么带有字符串的对象打印为空?

java - 为什么这个 boolean 表达式不能翻转?

java - 故意引发异常(Android with java)