发布表单时如何将datetimepicker设置为localtime

时间:2012-12-18 15:09:37

标签: javascript jquery html date datetimepicker

当我发布带有日期时间值的editform时,我遇到了问题。我有一个脚本,用getTimeZonOffset设置localdatetime。我希望数据库中的utc时间第一次在本地时间显示它是否有效。问题是当我想用datetimepicker编辑表单时。新值存储在数据库中,每次用户点击提交按钮时,它都会再次添加本地时间。

我该如何避免这种情况?

  $(function () {
    // Determine timezone offset in milliseconds
 var d = new Date();
 var offsetms = d.getTimezoneOffset() * 60 * 1000;

    $('.UTCTime input').each(function () {
        try
        {     
            var text = $(this).val();
            var n = new Date(text);
            n = new Date(n.valueOf() - offsetms);

            var curr_date = n.getDate();
            var curr_month = n.getMonth() + 1; //Months are zero based
            var curr_year = n.getFullYear();
            var curr_hour = n.getHours();
            var curr_minutes = n.getMinutes();

            $(this).val(curr_year + "/" + curr_month + "/" + curr_date + " " + curr_hour + ":" + curr_minutes);

        }
        catch (ex) {
            console.warn("Error converting time", ex);
        }
    });
});

 $(function () {
$(".datetimepicker input").datetimepicker({
    dateFormat: "yy/mm/dd",
    showTime: true,
});
});

 <div class="span3 value UTCTime datetimepicker">

2 个答案:

答案 0 :(得分:1)

看起来您的脚本将覆盖编辑时已保存的任何值

您需要在设置日期时间值时添加某种检查,以便不要覆盖它

if( !$(this).val() ) {
      $(this).val(curr_year + "/" + curr_month + "/" + curr_date + " " + curr_hour + ":" + curr_minutes);
}

如果您有其他默认值

,则可能需要更改if条件

答案 1 :(得分:0)

在数据库中为userid和timezone创建唯一索引,这意味着无法再为同一用户重新输入当前时区。

如果你有mysql db,那么在重复密钥更新时使用insert into table ....

希望这会给你正确的想法。