将时间戳(字符串)转换为毫秒(长)
Posted
技术标签:
【中文标题】将时间戳(字符串)转换为毫秒(长)【英文标题】:Convert timestamp (string) to milliseconds (long) 【发布时间】:2016-08-01 08:18:47 【问题描述】:输入是以下格式的任意随机时间戳:
HH:mm:ss.SS HH:mm:ss mm:ss.SS mm:ss ss.SS输出是给定时间戳的毫秒数
我尝试遍历每种格式,将其设置为 SimpleDateFormat,然后解析字符串,直到获得匹配的格式,但每次都得到不正确的输出。
还有其他方法可以实现吗?
【问题讨论】:
通过计算冒号和句点应该很容易确定它是哪种格式。 没有看到你的代码,以及输入和输出,这很难回答。 另外,请确保您将SimpleDateFormat
上的时区设置为格林威治标准时间。
@MikeM。感谢添加 GMT 为我解决了这个问题
【参考方案1】:
使用 JodaTime 很容易,因为您可以为 DateTimeFormatterBuilder 提供多种模式。
将其添加到您的 build.gradle 文件中。
dependencies
..
compile 'joda-time:joda-time:2.3'
然后使用以下命令添加您希望解析器识别的任何模式。
DateTimeParser[] parsers =
DateTimeFormat.forPattern("HH:mm:ss.SS").getParser(),
DateTimeFormat.forPattern("HH:mm:ss").getParser(),
DateTimeFormat.forPattern("mm:ss.SS").getParser(),
DateTimeFormat.forPattern("mm:ss").getParser(),
DateTimeFormat.forPattern("ss.SS").getParser()
;
DateTimeFormatter formatter = new DateTimeFormatterBuilder().append(null, parsers).toFormatter();
DateTime date = formatter.parseDateTime("21:00:05.12");
// Millis out
long milliseconds = date.getMillis();
【讨论】:
以上是关于将时间戳(字符串)转换为毫秒(长)的主要内容,如果未能解决你的问题,请参考以下文章
Pandas 将带有 unix 时间戳(以毫秒为单位)的行转换为日期时间
在 Spark (Scala) 中将时间戳转换为字符串而不会丢失毫秒