在数据库中保存UTC格式的日期时间

本文关键字:日期 时间 格式 UTC 数据库 保存 | 更新日期: 2023-09-27 18:18:42

我在UTC中面临保存日期时间的问题。我将datetime作为用户的输入,之后我想将datetime的UTC值保存在数据库中。我使用一个文本框(用于获取确切的日期)和一个下拉列表(用于获取该日期的小时数)来从用户获取日期时间输入值。下面是我的代码,以获得确切的输入日期时间从用户后组合两个控件的值。例如:25/12/2011为日期,10小时为小时,将这两个值组合后,日期值为25/12/2011 10:00 AM对于他的计算,我使用下面的代码:

      string[] dateArray = HdnDPC_date1.Value.Split('/');
            string dtt = dateArray[1] + "/" + dateArray[0] + "/" + dateArray[2];
            var fdate = Convert.ToDateTime(dtt);
           DateTime dadate = new DateTime(Convert.ToInt32(dateArray[2]), Convert.ToInt32(dateArray[1]), Convert.ToInt32(dateArray[0]));
            dadate = Convert.ToDateTime(fdate).AddHours(deadlineHr);

下面的代码用于转换UTC中的日期时间值

            DateTime DeadLine = TimeZoneInfo.ConvertTimeToUtc(dadate);

但是代码没有根据时区转换输入的日期时间,它总是根据"Central Time zone, USA &加拿大"但是我想根据用户的时区转换那个日期时间。

请帮我找出这个问题,为什么会发生这个

在数据库中保存UTC格式的日期时间

您可以尝试使用ToUniversalTime函数

DateTime univDateTime = DateTime.Now.ToUniversalTime();

关于ToUniveralTime的更多信息

您需要指定用户的时区。例如:

TimeZoneInfo.ConvertTimeToUtc(dadate, 
            TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));

将线程的当前文化设置为用户的文化,如:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);

见http://msdn.microsoft.com/en-us/library/bz9tc508.aspx