2

当我发布带有日期时间值的编辑表单时,我遇到了问题。我有一个使用 getTimeZonOffset 设置本地日期时间的脚本。当我第一次希望数据库中的 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">
4

2 回答 2

1

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

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

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

如果您有其他一些默认值,您可能必须更改 if 条件

于 2012-12-18T15:57:44.357 回答
0

在您的数据库中为用户 ID 和时区创建唯一索引,这意味着不能为可以更新的同一用户再次输入当前时区。

如果您有 mysql db,则在重复键更新时使用 insert into table ....

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

于 2012-12-18T15:21:00.540 回答