1

我在 UTC 中保存日期时间时遇到问题。我将日期时间作为用户的输入,之后我想将该日期时间的 UTC 值保存在数据库中。我正在使用一个文本框(用于获取确切日期)和一个下拉列表(用于获取该日期的小时数)来获取用户的日期时间输入值。下面是我的代码,用于在结合两个控件值后从用户那里获取确切的输入日期时间。比如:25/12/2011 作为日期和 10 小时作为合并两个值后的小时数,日期值是 25/12/2011 上午 10:00 用于他的计算我使用以下代码:

      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);

但是代码没有根据时区转换输入日期时间,它总是根据“美国和加拿大中央时区” 进行转换,但我想根据用户的时区转换该日期时间。

请帮我确定这个问题为什么会发生。

4

3 回答 3

4

您可以尝试使用该ToUniversalTime功能

DateTime univDateTime = DateTime.Now.ToUniversalTime();

更多关于ToUniveralTime 这里

于 2011-12-25T12:05:15.003 回答
2

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

TimeZoneInfo.ConvertTimeToUtc(dadate, 
            TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
于 2011-12-25T12:50:44.513 回答
0

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

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

请参阅http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

于 2011-12-25T12:09:27.233 回答