- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个“HH:mm”格式的输入字符串,其中时间分隔符根据区域设置(例如,美国为“10:45”,意大利为“10.45”)。我需要将其转换为分钟数。
这是我想出的:
String timeSeparator = getTimeSeparator(locale);
String[] duration = durationString.split(Pattern.quote(timeSeparator));
int minutes = Integer.valueOf(duration[0])*60 + Integer.valueOf(duration[1]);
getTimeSeparator
方法取自 https://stackoverflow.com/a/7612009/7753225
有没有更简单的方法?例如使用 `java.time'。
最佳答案
Duration.parse(
"PT" +
"10:45".replace( ":" , "M" )
.replace( "-" , "M" )
.replace( "." , "M" )
.replace( "," , "M" )
+ "S"
).toMinutes()
"10:45" → PT10M45S → 10
ISO 8601标准为未附加到时间线的此类时间跨度定义了一种格式:PnYnMnDTnHnMnS
P
标记开始。 T
将任何年-月-日与小时-分钟-秒分开。所以一个半小时是 PT1H30M
。您的十分钟四十五秒示例是 PT10M45S
。
执行简单的字符串操作将您的输入转换为这种格式。
String input = "10:45" ;
String inputStandardized = "PT" +
input.replace( ":" , "M" )
.replace( "-" , "M" )
.replace( "." , "M" )
.replace( "," , "M" )
+ "S" ;
PT10M45S
持续时间
解析为 Duration
. java.time 类使用 ISO 8601解析和生成字符串时默认格式。因此无需指定格式化模式。
Duration duration = Duration.parse( inputStandardized );
duration.toString(): PT10M45S
您可以使用 Duration
对象进行日期时间数学运算,传递给 plus
和 minus
。因此,您可能不需要将分钟数作为整数。但是您可以询问持续时间的总分钟数。
long minutes = duration.toMinutes();
10
查看此 code run live at IdeOne.com .
提示:在一段时间内使用时钟时间格式是自找麻烦。歧义导致困惑和错误。我建议对持续时间使用标准 ISO 8601 格式,因为它们旨在明确、易于阅读和解析。
关于java - 如何解析HH :mm into amount of minutes considering locale time separator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42983908/
我正在尝试编写一个简单的控制台应用程序,该应用程序将从键盘接受一个字符串,该字符串以 HH:MM 形式表示小时和分钟,然后必须将该字符串放入两个整数中,分别表示小时和分钟,然后再显示总分钟数,因此 0
在 Javascript 中,我有 4 个带有值的变量。 以下是示例: var start_hour = 1; var start_minute = 00; var end_hour = 6; var
例如我有 525 分钟,如果我们将它除以 60,结果将为 8.75 但是 1 小时只有 60 分钟而不是 75 如何从总分钟数中计算出准确的小时:分钟数? 最佳答案 $hours = intval($
我需要每 30 分钟(整点和整点后 30 分钟)重新加载页面内容。我正在考虑使用 JavaScript,并且尝试了下面的代码,但它进入了无限循环。我不知道如何更改它以避免循环。 meta 标记不会有帮
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我正在寻找一个字符串 (mysql),它可以正确地计算总时间的几个小时。分钟。我找不到任何合适的东西。 例子: id| time_spent| 1 | 10.15 | 2 | 10.15
我对以下命令的理解是它查找在最后 {x} 分钟内修改过的文件。 如果我从 mmin 中排除 - 是什么意思,它应该返回什么? 命令 find . -maxdepth 1 -mmin -20 最佳答案
我有两个 Calendar 变量,分别命名为 calendar1 和 calendar2 其中存储了一些日历值。 我想比较这些变量的 MINUTE 值。 我找到了两种方法,但我想知道有什么区别以及哪一
例如,我想解析下面的字符串: Tue Sep 28 18:02:24 GMT+08:00 2010 我使用 SimpleDateFormat 的模式: new SimpleDateFormat("EE
我正在 Mac OS 终端上创建 cron,代码如下: home.cron 的内容: * * * * * /users/username/desktop/forTrump/script.sh 然后我这
我在 golang 1.9.2 中遇到了一个非常奇怪的错误:当我尝试编写 int64(1.1*float64(time.Minute)) 时显示错误。编译器说常量被截断为整数。 但是当我将 1.1 更
我正在使用从上午 9:50 开始的日内数据,并希望将其转换为 20 分钟的时间间隔,因此第一个时间段为 09:50 至 10:09:59,第二个时间段为 10: 10 到 10:29:59 等。但是
我的用户选择一个日期,我将其存储在纪元秒(或必要时以毫秒为单位)。 我的用户分别选择一天中的时间和时区。 如何使用这些新信息调整我的纪元时间。我觉得我应该能够根据小时/分钟添加 X 毫秒,然后根据时区
我有一个这样的表: id date_time 1 2/11/2013 7:05 2 2/11/2013 7:00 3 2/12/2013 7:00 4 2/14/2013 7:00
我这里有一个脚本(不是我自己的),它计算我的卫星接收器中电影的长度。它以分:秒为单位显示长度 我想在 小时:分钟 我必须做出哪些改变? 这是有关脚本的和平: if len > 0: len =
我有这样的查询: select t.Paydate,t.DelDate,DATEDIFF(MI, t.Paydate,t.DelDate) as Datdiffernce from Transacti
我有以下代码: insert into @Precalculo (descripcion, Valor) exec dbo.GetRankingTotalizador @Fecha,
我目前正在研究有关 super 马拉松的数据。有许多检查点带有每个运行者在该检查点上的时间的时间戳,但是当我试图研究分段时间时,我需要计算半场时间,这本身不是问题,但我遇到了格式问题。 我抓取的数据如
使用 cron,如果我想每 5 分钟运行一次命令,它将是: */5 * * * * command 但是如果我想专门设置一个分钟列表怎么办? 就像 5 点、18 分钟和 15 分钟一样?我猜这个: 5
很简单的问题。我有一个使用倒计时的 NodeJS 应用程序 ( https://www.npmjs.com/package/countdown )。倒计时本身有效。 但是,我不知道如何设置为8分钟?
我是一名优秀的程序员,十分优秀!