首页 > 解决方案 > 在 Java 中将人类可读的时间解析为毫秒

问题描述

我正在尝试将 4hours 或 1day 或 2months 之类的字符串转换为毫秒。但是我如何有效地做到这一点而不必检查 string.contains("h") 等....?

Node 有ms,Java 会不会有类似的东西?

根据一些回复进行编辑:是的,实际数字可能会发生变化,我以 4 小时为例,但可以是 1、2、3、5 等。日期和月份相同。是的,它们直接相邻。没有空间。示例字符串:remind 1h Go to school 输出应为:3 600 000(毫秒)

标签: java

解决方案


好吧,你可以把它分解成更小的部分。

  • 在字符串中查找此类事件;
  • 取数字部分和单位部分并将它们的值相乘以获得毫秒。

要查找出现的情况,您可以使用正则表达式。像这样的正则表达式(-?\d+)(h|days|min|sec)会匹配这样的字符串。使用PatternandMatcher会有所帮助。

要将数字转换为毫秒,需要将单位映射到与该单位的毫秒数匹配的值。例如,days将映射到 86400000。


推荐阅读