Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中解析时间?_Java_Parsing_Date_Datetime_Time - Fatal编程技术网

如何在Java中解析时间?

如何在Java中解析时间?,java,parsing,date,datetime,time,Java,Parsing,Date,Datetime,Time,我想知道java是否有一种内置的方式来解析时间/日期,如下所示: 5m1w5d3h10m15s 这是5个月,1周,5天,3小时,10分钟,15秒 您可能希望将其解析为一个时间段。而不是日期,除非您的输入看起来像“2012y10m8d”等。如果尝试将一段时间表示为java.util.Date,可能会遇到许多问题。相信我,我以前也走过这条路 而是考虑使用JoDA时间作为时间段。有关详细信息,请参见此问题: 看起来也很有趣。我不知道具体的格式。。。但我建议你看看 另外,构建自己的解析器也不会太困难

我想知道java是否有一种内置的方式来解析时间/日期,如下所示:

5m1w5d3h10m15s

这是5个月,1周,5天,3小时,10分钟,15秒

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

而是考虑使用JoDA时间作为时间段。有关详细信息,请参见此问题:


看起来也很有趣。

我不知道具体的格式。。。但我建议你看看

另外,构建自己的解析器也不会太困难

是的,它被称为,你只需要定义你的模式

由于你没有(自愿地?)精确地说出年份,我加了一个:

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内置了解析时间/日期的方法”,答案是肯定的。

您可以参考这篇文章,了解一些想法:

当然还有SimpleDataFormat类供参考。
使用SimpleDataFormatter类将帮助您将字符串转换为日期。使用Joda time PeriodFormatter将允许您转换/表示一个期间而不是日期。您将能够表达和解析如下内容:
15m1w5d3h10m15s

我将首先反转字符串。然后,我将字符串标记为6个数字的独立部分——月、周、日、时、分、秒。我将每个令牌存储在一个数组中,并分别处理每个元素:a[0]=秒,a[1]=分钟。。。a[5]=个月。这是我能马上想到的最直观的方法,因为我想不起有哪家图书馆能为你做到这一点。当然,您没有指定“解析”是什么意思。

您可以通过看电视或踢足球来打发时间吗?开玩笑!到目前为止,你都在哪里寻找解决方案?这种输入的来源是什么?不要。这将把它解析成一个日期,表示历史上的一个特定时间。5个月是一段非常不同的时间,问题是关于“解析时间/日期”。但我不确定这是不是一个糟糕的措辞从OP。如果真正的问题是,事实上,关于持续时间,我的回答没有帮助。但是。。。如果是关于持续时间的问题,那么这个问题就没有多大意义,因为月份的持续时间是可变的……有趣的是,月份的持续时间是可变的!它仍然可能是一个时间段,只是如果不先“锚定”它,就不能转换为毫秒。例如,2012-10-08+5m1w5d3h10m15s非常有意义。或5m3w+10m-1m3w=15m2w。是。我的结论是,OP没有充分考虑这个问题。这并不是一个真正可以回答的问题。