【问题标题】:How to get formatted date with date-time and timezone with offset in java [duplicate]java - 如何在java中获取带有日期时间和时区偏移的格式化日期[重复]
【发布时间】:2017-04-13 02:46:51
【问题描述】:

我想获得带有时区和偏移量的格式化日期和时间。最近我使用此代码进行格式化。

public static String getFormattedLicenseDate(long date) {
      DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG);
      return dateFormat.format(new Date(date));
}

如果输入为 1476786856310,则此方法返回“10/18/16 4:04:16 PM HST”,但我想修改此方法以获取“OCT 18, 2016 16:04:04 HST (HST-10 :00)"

是否有任何模式可以获取此输出,例如“OCT 18, 2016 16:04:04 HST (HST-10:00)”

【问题讨论】:

  • 发帖前搜索 Stack Overflow。这已经处理了很多次了。

标签: java date formatting


【解决方案1】:

您可以使用SimpleDateFormat 格式为"MMM dd, yyyy HH:mm:ss z (zXXX)"

public static String getFormattedLicenseDate(long date) {
    SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss z (zXXX)");
    return format.format(new Date(date));
}

【讨论】:

  • 我的问题没问题,但如果我想在大括号中使用“GMT”,那么我应该用什么来代替“z”。例如。 "2016 年 10 月 18 日 16:04:04 HST (GMT-10:00)"
  • 是的,你应该自己试试,你可以添加任何字符消除SimpleDateFormat字母docs.oracle.com/javase/6/docs/api/java/text/…
【解决方案2】:
DateFormat dateFormat =new SimpleDateFormat("MMM dd, yyyy HH:mm:ss z (zZ)");
return dateFormat.format(new Date(date));

有关日期格式的更多信息,请参阅this

【讨论】:

  • 这些麻烦的类现在是遗留的,被 java.time 类所取代。而你忽略了时区的关键问题。
【解决方案3】:
return new SimpleDateFormat("MMM dd, yyyy HH:mm:ss z (zZ)").format(new Date()));

来自SimpleDateFormat JavaDoc

  • z:通用时区(太平洋标准时间;PST)
  • Z:RFC 822 时区 (-0800)

【讨论】:

  • 请解释你的代码,纯代码的答案不是很有用
猜你喜欢
  • 1970-01-01
  • 2019-01-25
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
  • 2018-03-15
  • 2013-04-04
  • 1970-01-01
相关资源
最近更新 更多