Java将1d2h3m转换为毫秒
我正在尝试编写一个程序,可以在其中插入一个字符串,例如Java将1d2h3m转换为毫秒,java,Java,我正在尝试编写一个程序,可以在其中插入一个字符串,例如 5d2h7m (5 days 2 hours 7 minutes) 这需要时间 System.currentTimeMillis(); 加上5天2小时7分钟得到一个新值,然后保存。以后需要时,我可以检查节省的时间,看看它是否已经过去了 我对如何将5天2小时7分钟转换为毫秒感到困惑 有没有一个通用的Java方法是我缺少的 编辑:我试图将字符串转换为毫秒,而不是相反 有没有一个通用的Java方法是我缺少的 不,不是在JDK中。您必须自己解析
5d2h7m (5 days 2 hours 7 minutes)
这需要时间
System.currentTimeMillis();
加上5天2小时7分钟得到一个新值,然后保存。以后需要时,我可以检查节省的时间,看看它是否已经过去了
我对如何将5天2小时7分钟转换为毫秒感到困惑
有没有一个通用的Java方法是我缺少的
编辑:我试图将字符串转换为毫秒,而不是相反
有没有一个通用的Java方法是我缺少的
不,不是在JDK中。您必须自己解析字符串(可能使用),然后自己执行适当的乘法和加法。以下是我为解决问题所做的: (timeArgs是从问题中的字符串中拆分出来的字符串[])
长天数=0;
长时间=0;
长分钟=0;
对于(int x=0;x
你必须发布代码才能获得帮助,发布要求和显示没有尝试/努力只是要求其他人免费为你做工作。你可以使用新软件包来实现这一点。看看Duration和Period。然后做与复制相反的事情,就是这么简单,你必须展示一些努力来获得现有代码的帮助。我已经解析了字符串,这部分很简单。时间->毫秒是我在查找方法时遇到的问题。“timeArgs是一个字符串[],它是从问题中的字符串中拆分出来的”如何?展示那部分。同时,去除不必要的压痕。祝贺你的第一个回答!可能值得一提的是:时间单位的使用非常方便。实际上,一天中的毫秒数是可变的(DST,闰秒),但如上所述,它是一个常量:1000L*60*60*24
。其他的也一样。尽管如此,TimeUnit
仍然存在,重用它可以避免诸如遗漏一个*60
之类的令人尴尬的错误。
long days = 0;
long hours = 0;
long minutes = 0;
for (int x = 0; x < timeArgs.length; x++) {
if (timeArgs[x].contains("d")) {
days = Long.parseLong(timeArgs[x].replace("d", ""));
break;
} else if (timeArgs[x].contains("h")) {
hours = Long.parseLong(timeArgs[x].replace("h", ""));
break;
} else if (timeArgs[x].contains("m")) {
minutes = Long.parseLong(timeArgs[x].replace("m", ""));
break;
}
}
long millis = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(days) + TimeUnit.HOURS.toMillis(hours) + TimeUnit.MINUTES.toMillis(minutes); // Current time plus other values
System.out.print("millis is " + millis);