【问题标题】:Parsing date to remove timezone解析日期以删除时区
【发布时间】:2014-03-06 07:02:39
【问题描述】:

我使用下面的SimpleDateFormat来解析一个字符串,

 SimpleDateFormat ft= new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy");
 String notimeZone = ft.format(startDateTime);
 Date date = ft.parse(notimeZone);

startDateTime 是日期对象,其值格式为“Thu Mar 06 12:27:55 IST 2014”。

在 notimeZone 变量中,我得到了,2014 年 3 月 6 日星期四 12:27:55

我期待变量 date 的输出,如 2014 年 3 月 6 日星期四 12:27:55

但我也一样,2014 年 3 月 6 日星期四 12:27:55 IST。

如何从日期对象中删除时区。

请帮忙。

【问题讨论】:

标签: java date simpledateformat


【解决方案1】:

java.util.Date does 没有Timezone。它不知道TimeZone。

当您打印时,java 会选择默认时区。

从概念上讲,您不能有没有时区的日期时间。日期时间必须在一个且只有一个区域中。您可以将其转换为其他区域,但绝不可能没有区域。

如果您的业务用例需要了解时区,我更愿意使用Calendar 类或Joda Time。避免玩 Date 类。如果您的业务用例不需要任何时区意识,那么请继续使用日期。假设所有 Date 实例都在您的默认时区。

最好的办法是使用Calendar(或Joda Time)。 Calendar 有点不直观,但您将能够完成您的工作。 Date 类大部分被弃用并非没有道理。

用Timezone 初始化你的Calendar(查看可用的构造函数)。使用Dateformat 转换并在您希望的任何时区以UI 显示。我在您之前的问题中发布了一些代码。那可能对你有帮助。我陷入了类似的问题。我在一个时区的数据库中有日期。要在 UI 上的另一个时区显示它们,您需要将该日期时间转换为另一个时区。

【讨论】:

    【解决方案2】:

    以下格式给出

    “EEE MMM dd HH:mm:ss z yyyy”->Thu Mar 06 13:18:02 IST 2014。

    “EEE MMM dd HH:mm:ss yyyy”-> 2014 年 3 月 6 日星期四 13:18:02。

    检查您是否在日期格式字符串中错误地输入了“z”。 更多详情,请参考-http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 2013-07-06
      相关资源
      最近更新 更多