我正在尝试将DateTime
保存到数据库中。
当我从服务器计算机运行代码并将日期保存到数据库时,它会正确保存DateTime
,但是当我将网站部署到生产环境时,从本地计算机访问它,并尝试保存相同的DateTime
,然后将其更改为不同的日期和时间。我想这可能是由于我的机器和服务器机器上的时区不同。
我尝试将日期时间转换为UTC但不起作用:
DateTime OnlyStartDate = Convert.ToDateTime(app_date);
DateTime NewStartDateTime = Convert.ToDateTime(
OnlyStartDate.Add(TimeSpan.Parse(appData.start.ToString("HH:mm:ss"))));
startTime = Convert.ToString(NewStartDateTime);
这是传递变量startTime的查询,它将错误的时间保存到db:
query = "Insert into [Appointments] Values('" + loc_id + "', '" + appData.titleId +
"', '" + patiant_id + "', '" + app_date + "', '" + startTime + "', '" + endTime +
"', '" + appData.providerId + "', 'enable', 'False', '" + userEmail + "', '" +
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "', '" + userEmail + "', '" +
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "', '" +
appData.statusId + "', '" + appData.userId + "','')";
DB.executeQuery(query);
答案 0 :(得分:0)
使用DateTime
是很棘手的,您应该遵循规则以确保系统按预期运行。
DateTime
。DateTime
的值。使用DateTime
或在URL中的查询字符串中发送json
都是应该这样做的示例。DateTime
实例。DateTime
实例(从不作为字符串)。DateTime
值时,尽早转换为UTC值,因为客户端知道"关于它的相关时区。DateTime
值时,在客户端上尽可能晚地转换为本地时区,因为客户端"知道"关于它的相关时区。DateTime
值转换为字符串(来自DateTime
类型)(即,它是客户端最佳处理的表示层关注点)。 / LI>
DateTime
值时,请尽早转换为DateTime
类型。答案 1 :(得分:0)
将数据保存到db时使用DateTime.UtcNow,在显示时将其转换为要显示日期时间的时区,这是最初的主要做法。
在约旦时区显示UTC日期时间的示例:
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Jordan Standard Time");
string CreatedDate = TimeZoneInfo.ConvertTimeFromUtc(model.CreatedDate, timeZoneInfo).ToString("d/M/yyyy HH:mm:ss")
model.CreatedDate是来自db的UTC日期时间。