【问题标题】:How to set datetimepicker to localtime when posting form发布表单时如何将 datetimepicker 设置为本地时间
【发布时间】:2012-12-05 19:54:18
【问题描述】:

我在发布带有日期时间值的编辑表单时遇到问题。我有一个使用 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">

【问题讨论】:

  • 你得到答案了吗?

标签: javascript jquery html date datetimepicker


【解决方案1】:

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

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

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

如果您有其他默认值,您可能需要更改 if 条件

【讨论】:

  • 我不认为这对我有用。我找到了一个解决方案,它的功能是在发布帖子之前再次将日期值设置为 utc。除了 n = new Date(n.valueOf() + offsetms); 之外,它看起来与上面的函数完全相同。我不认为这是最好的解决方案。
【解决方案2】:

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

如果你有 mysql 数据库,那么在重复键更新时使用插入到表中......

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

【讨论】:

  • 我真的需要更改数据库吗?当我使用我的 datetimepicker 时,我不能以某种方式添加 getTimezoneOffset。
  • 好吧,如果您不想在数据库中获取重复项,并且避免编写大量查询,请使用它。您可以编写其他查询来检查此用户是否设置了自己的时区,如果他设置了则重写它。但是您只能使用 Javascript 获取 localTimeZone(用户时区)。
猜你喜欢
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多