从SQL显示网站上的时间

时间:2012-04-21 19:53:51

标签: c# sql asp.net-mvc datetime

我似乎无法找到答案,因此这篇文章。我希望存储在SQL数据库中的时间在我的网站上显示为数据库中的确切时间。目前,情况并非如此。正在显示的时间正在转换为浏览计算机的本地时间。由于保存的时间是预约时间,无论浏览计算机在哪里或什么时区,转换它都没有意义。我认为使用TimeZone和TimeZoneInfo方法将时间转换为本地时间,但这似乎是自动发生的。如何将保存的确切时间保存为我网站上显示的时间?

SQL数据库字段ETAStart和ETAEnd被定义为日期时间。

数据库的更新在控制器中处理如下:

if (TryUpdateModel(model)) {

    System.DateTime ETAEnd = Convert.ToDateTime(model.ETAStart).AddHours(3);

    model.ETAEnd = ETAEnd;
    model.UpdatedBy = CurrentUser();

    model.UpdateDate = Convert.ToDateTime(DateTime.Now.ToString("U"));


    dc.SubmitChanges();


    return View(new GridModel<ManifestMasterModel> { Data = GetMMList(0) });

} else {
    return View();
}

提前感谢您,我非常感谢所有回复的人。

3 个答案:

答案 0 :(得分:0)

您是否检查了服务器上设置的时区?几天前它发生在我身上,事实证明托管服务器有不同的时区。

以下是检查方法:

Response.Write(TimeZoneInfo.Local.DisplayName)

编辑1:

您可以使用Utc时间将其转换为您想要的时区。参见:

TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));

答案 1 :(得分:0)

您是否尝试将日期时间存储为UTC:

model.UpdateDate = Convert.ToDateTime(DateTime.Now.ToString("U"));

您可以像这样使用它来进行转换:

model.UpdateDate = DateTime.Now.ToUniversalTime();

答案 2 :(得分:0)

我不完全确定我明白这个问题是什么,但听起来我需要实现自定义模型绑定器。

这些资源可能会对您有所帮助:

Timezone Strategy

Custom DateTime model binder in Asp.net MVC

http://weblogs.asp.net/melvynharbour/archive/2008/11/21/mvc-modelbinder-and-localization.aspx

虽然,我认为使用字符串的快速修复建议没有任何问题(我认为你会帮自己一个忙)。听起来你正试图让客户端和MVC忽略处理日期的时区含义,这可能会花费更多的工作并且比使用字符串方法更不干净。您仍然可以在数据库中使用DateTime,只需提取用户提交的字符串值,然后使用适当的时区将其解析为日期时间。