【问题标题】: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 为我解决了这个问题

标签: android date


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-11
    • 2013-02-17
    • 1970-01-01
    • 2016-03-04
    • 2013-03-09
    • 1970-01-01
    相关资源
    最近更新 更多