【问题标题】:Parsing Bootstrap Datepicker timestamp to Joda DateTime将 Bootstrap Datepicker 时间戳解析为 Joda DateTime
【发布时间】:2017-12-14 10:06:12
【问题描述】:

我从 Boostrap 日期选择器 (TimeRangeService.To 确切地说) 获得了一个时间戳:

}).on('changeDate', function (selected) {
    var selectedDate = new Date(selected.date.valueOf());
    TimeRangeService.To = String(selected.timeStamp);
    $('#idTimeRangeFromInput').datepicker('setEndDate', selectedDate);
});

我需要将其解析为 Joda DateTime 对象:

DateTime from = new DateTime(Long.parseLong(fromStr));

但是每次当我在 DateTime 构造函数中选择任何日期并发送时间戳(解析为长)时,我都会得到带有今天日期的对象。

示例:我在 datepicker 中选择了 05/12/2017,但解析后,新的 DateTime 对象的日期为 14/12/2017。有什么解决办法吗?

【问题讨论】:

  • Long.parseLong(fromStr) 在您的情况下返回什么?
  • Long.parseLong(fromStr) 返回正常的 long 变量,因为 fromStr 是 String 且 DateTime 构造函数只接受 long 类型
  • 同意!这些是毫秒。但是'fromStr'从哪里获取代码中的日期?
  • 啊,是的,有毫秒。 fromStr 是一个 TimeRangeService.To 值,在 POST 请求中从前端发送。 TimeRangeService.To 是来自 Bootstrap datepicker 的时间戳(请参阅我的问题中的第一个代码示例)
  • 好的。请尝试 DateTime from = new DateTime(Long.parseLong(fromStr), DateTimeZone.UTC);

标签: javascript java jodatime bootstrap-datetimepicker


【解决方案1】:

问题已解决,感谢Hasan Ali 的帮助!

使用:

var timeStamp = $("#datePickerId").datepicker("getDate").getTime();

因为 selected.timeStamp 变量有一个旧的时间戳。好奇心,就我而言,Bootstrap 有一个有趣的问题。看看这个:

}).on('changeDate', function (selected) {
        var selectedDate = selected.date;
        var timestamp = selected.timeStamp;
        $('#idTimeRangeToInput').datepicker('setStartDate', selectedDate);
      });

在这种情况下(每次用户更改日期选择器中的数据时都会触发事件)selected.date 正确,但 selected.timeStamp 不正确。

【讨论】:

    猜你喜欢
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    相关资源
    最近更新 更多