如何在Java中解析时间?

问题描述 投票:0回答:6

我想知道 java 是否有一种内置的方法来解析像这样的时间/日期:

5m1w5d3h10m15s

5个月1周5天3小时10分15秒。

java parsing date datetime time
6个回答
9
投票

是的,它称为 SimpleDateFormat,您只需定义您的模式即可。

由于您没有(自愿?)精确年份,所以我添加了一个:

DateFormat df = new SimpleDateFormat("M'm'W'w'F'd'H'h'm'm's's'yyyy");
System.out.println(df.parse("5m1w5d3h10m15s"+"2012"));

当然有一些可用的库(很多人重定向到 Joda,它比标准且令人困惑的 java 库更好),但由于您的问题是关于“如果 java 带有内置的方法来解析时间/日期”,答案是的。


2
投票

您可能想将其解析为一个时间段。而不是日期,除非您的输入看起来像“2012y10m8d”等。如果您尝试将一段时间表示为 java.util.Date,预计会遇到许多问题。相信我,我以前也走过这条路。

请考虑使用 Joda 时间来表示时间段。有关详细信息,请参阅此问题:How do I parse a string like "-8y5d" to a period object in joda time

HumanTime看起来也很有趣。


1
投票

我首先将字符串反转。 然后,我将字符串标记为 6 个数字的独立部分——月、周、天、小时、分钟、秒。我将每个标记存储在一个数组中,并分别处理每个元素:a[0] = 秒,a[1] = 分钟,... a[5] = 月。 这是我能立即想到的最直观的方法,因为我不记得有任何库可以为您执行此操作。当然,您没有具体说明“解析”的含义。


0
投票

我不知道具体的格式...但我建议你看一下this

而且,构建自己的解析器也不会太困难......


0
投票

您可以参考这篇文章的想法: Java 日期格式 - 包括附加字符

当然还有 SimpleDateFormat 类供参考。 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html


0
投票

使用 SimpleDateFormatter 类将帮助您将字符串转换为日期。使用 Joda 时间 periodFormatter 将允许您转换/表达句点而不是日期。例如。您也将能够表达和解析类似以下内容:

15m1w5d3h10m15s

© www.soinside.com 2019 - 2024. All rights reserved.