【问题标题】:Formatting UTC date-time's partial seconds格式化 UTC 日期时间的部分秒
【发布时间】:2017-08-20 14:26:05
【问题描述】:

从服务器解析 JSON UTC 日期时间数据后,我收到了

2017-03-27 16:27:45.567

... 有什么方法可以在不使用繁琐的字符串操作的情况下对其进行格式化,以便秒部分在将其作为 DateTimeFormat 模式传递之前四舍五入到 46,例如“yyyy-MM-dd HH: mm:ss"?

【问题讨论】:

  • 你用的是哪个时间库?
  • @shmosel Joda-time!
  • 可以在将json解析为object的同时直接完成。你的 json lib jackson 或 gson 是什么?另外,显示 java bean 类。你在使用什么 RESTful 库吗?
  • 为什么不在格式模式中包含.SSS?您可以稍后四舍五入。

标签: java string datetime jodatime utc


【解决方案1】:

您可以像这样将第二个四舍五入:

DateTime dateTime = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS")
        .withZoneUTC()
        .parseDateTime("2017-03-27 16:27:45.567")
        .secondOfMinute()
        .roundCeilingCopy();

System.out.println(dateTime);
// 2017-03-27T16:27:46.000Z

【讨论】:

    【解决方案2】:

    您看过(并且可以使用)MomentJS 库吗?我在从服务器读取各种日期格式并在 JavaScript 代码中理解它们时遇到问题(这导致我 here)。从那时起,我就开始使用 MomentJS,并且在 JavaScript 中处理日期/时间变得更加容易。

    这是一个例子:

    <script>
        try
        {
            var myDateString = "2017-03-27 16:27:45.567";
            var d = moment(myDateString);
    
            var result = d.format('YYYY/MM/DD HH:mm:ss');
            alert("Simple Format: " + result);
    
            // If we have millliseconds, increment to the next second so that 
            // we can then get its 'floor' by using the startOf() function.
            if(d.millisecond() > 0)
                d = d.add(1, 'second');
    
            result = d.startOf('second').format('YYYY/MM/DD HH:mm:ss');
            alert("Rounded Format: " + result);
        }
        catch(er)
        {
            console.log(er);
        }
    </script>
    

    当然,您可能希望将此逻辑包装到一个函数中。

    【讨论】:

    • 问题不在于 JavaScript。
    猜你喜欢
    • 2019-07-27
    • 2023-03-23
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2020-06-02
    • 1970-01-01
    相关资源
    最近更新 更多