当我发布带有日期时间值的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">
答案 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 ....
希望这会给你正确的想法。