将时间戳(字符串)转换为毫秒(长)

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();

【讨论】:

以上是关于将时间戳(字符串)转换为毫秒(长)的主要内容,如果未能解决你的问题,请参考以下文章

AIX 转换时间戳

Pandas 将带有 unix 时间戳(以毫秒为单位)的行转换为日期时间

在 Spark (Scala) 中将时间戳转换为字符串而不会丢失毫秒

Freemarker 以毫秒为单位将时间戳转换为带有时区的日期

JS将毫秒时间戳转换成合适的时间字符串

JS将毫秒时间戳转换成合适的时间字符串