如何使用eonasdan-datetimepicker中隐藏字段的UTC值在本地时间设置defaultDate?

时间:2016-10-14 21:30:24

标签: javascript jquery datetime momentjs eonasdan-datetimepicker

我使用数据库中的UTC日期/时间值填充隐藏字段。然后我使用一些jQuery和时刻库将UTC日期转换为本地时间并设置eonasdan-datetimepicker的默认日期。我还使用eonasdan-datetimepicker的dp.change事件将通过窗口小部件选择的日期转换回UTC,以通过隐藏字段绑定回数据库。这是我的javascript - 这有效,但我不喜欢它。

$(".datepicker").each(function (index) {
    var utcDateTime = moment.utc($("#" + $(this).data("utc-target")).val(), "MM/DD/YYYY h:mm A");
    var localDateTime = moment.utc(utcDateTime).local().format("MM/DD/YYYY h:mm A");
    $(this).find(">:first-child").val(localDateTime);
}).datetimepicker({
    useCurrent: false,
}).on("dp.change", function (e) {
    $("#" + $(this).data("utc-target")).val(moment.utc(e.date).format("MM/DD/YYYY h:mm A"));
});

HTML:

<label for="PublishedField">Date/Time Published</label>
<div class="input-group date datepicker" data-utc-target="PublishedUtcField">
    <input name="PublishedField" type="text" id="PublishedField" class="form-control" />
    <span class="input-group-addon"><span class="fa fa-calendar">&nbsp;</span></span>
</div>
<input type="hidden" name="PublishedUtcField" id="PublishedUtcField" value="4/10/2015 5:16:00 PM" />

虽然这有效,但我不是每个循环的粉丝来设置datetimepicker的初始值。我觉得通过defaultDate属性设置它会更干净,但是我无法使用匿名函数设置该属性。我认为dp.initialize或dp.setup事件将是一个很好的解决方案,但据我所知,该库不支持这样的东西。这也可以使用某种占位符功能来完成,但我在文档或GitHub上找不到任何类似的场景。

有人知道更好的方法吗?是否以某种方式支持这种情况,我只是没有看到或意识到这种情况?我错过了一些明显的东西吗?

0 个答案:

没有答案