【问题标题】:Java: Datetime to Date objectJava:日期时间到日期对象
【发布时间】:2017-04-25 16:11:58
【问题描述】:

我有一个 SQL 时间戳字符串,例如。 g.

String timestamp = 2016-12-11 14:26:35

我想得到当天今天的区别,以及表单中的String

11.12.206 14:26:35

我认为要做到这一点,我必须从对象中获取毫秒并将它们解析为日期/日历对象?

如何做到这一点或有更简单的方法?

【问题讨论】:

  • 您在使用 Java 8 吗?最佳答案可能取决于此。在 Java 1.7 中,我们倾向于使用 Joda Time 进行更复杂的时间计算,尤其是在想要获取时间间隔时。 Java 8 具有内置选项。不妨看看stackoverflow.com/questions/1555262/…
  • @DanArmstrong 是的,我愿意。如何从 Timestamp 字符串中获取 Date 对象?
  • stackoverflow.com/questions/1071800/… 中查找“带有第二分辨率示例的无时区时间戳”。您会找到“DateTimeFormat.forPattern”,它应该可以让您到达您需要的地方。
  • @DanArmstrong 是的,它有效,谢谢
  • @DanArmstrong 仅供参考,that linked Answer 使用 Joda-Time 库。 Joda-Time 项目现在位于 maintenance mode,建议迁移到 java.time 类。

标签: java string datetime


【解决方案1】:

这些问题已经在 Stack Overflow 上讨论过很多次。您的问题与许多其他问题重复。所以搜索详情。搜索下面看到的类名和诸如elapsed 之类的词。

这里是一个简短的回答。

ISO 8601

通过将中间的空格替换为T,将您的输入字符串从 SQL 格式转换为标准 ISO 8601 格式。

String input = "2016-12-11 14:26:35".replace( " " , "T" );

LocalDateTime

解析为LocalDateTime,因为此字符串缺少任何时区指示或与UTC 的偏移量。

LocalDateTime ldt = LocalDateTime.parse( input );

ZonedDateTime

应用时区作为该字符串背后的含义。您是指奥克兰、巴黎或蒙特利尔的下午两点?

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdtThen = ldt.atZone( z );

获取当前时刻。同样,时区至关重要。不能忽视或希望离开。

ZonedDateTime zdtNow = ZonedDateTime.now( z );

区别?

至于“get the difference”,你不用解释是什么意思。

如果您想将时间跨度表示为一整天,请使用Period

Period p = Period.between( zdtThen.toLocalDate() , zdtNow.toLocalDate() );

如果您希望经过小时-分钟-秒,请使用Duration

Duration d = Duration.between( zdtThen , zdtNow );

要作为一对时间点进行跟踪,请获取ThreeTen-Extra 库,并使用Interval 类。

Interval interval = Interval.of( zdtThen.toInstant() , zdtNow.toInstant() );

【讨论】:

    【解决方案2】:

    如果我理解您的问题,您只需将 SQL 时间戳转换为对象数据。可以使用 SimpleDateFormat 完成。

    请看这里https://www.mkyong.com/java/how-to-convert-string-to-date-java/

    之后,您可以使用 joda-time 轻松区分两个日期。

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 2011-08-12
      • 2014-05-26
      • 1970-01-01
      相关资源
      最近更新 更多