加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在ASP.NET中使用C#将字符串转换为日期让我得到一个小时的约会.为

发布时间:2020-12-16 03:58:27 所属栏目:asp.Net 来源:网络整理
导读:我使用VS2010,C#,ASP.NET编写以下代码: DateTime dt = DateTime.Parse("2012-03-11T02:53:58-08:00"); //Date is taken from SQL databasestring strDt = dt.ToString(); //Becomes: "3/11/2012 3:53:58 AM" 这个四月的傻瓜是从微软开玩笑的吗? 解决方法
我使用VS2010,C#,ASP.NET编写以下代码:

DateTime dt = DateTime.Parse("2012-03-11T02:53:58-08:00"); //Date is taken from SQL database
string strDt = dt.ToString();   //Becomes: "3/11/2012 3:53:58 AM"

这个四月的傻瓜是从微软开玩笑的吗?

解决方法

“不正确”的结果(正如暗示的答案所解释的)是由于2012年3月11日上午2:38:58在美国和加拿大观察夏令时的地区不是有效的日期和时间.显然,您的代码在其中一个区域的计算机上运行.

要将字符串转换为DateTime,忽略任何时区偏移,可以调用DateTimeOffset.Parse,然后检索结果的DateTime组件:

DateTime dt = DateTimeOffset.Parse("2012-03-11T02:53:58-08:00").DateTime;
string strDt = dt.ToString();  // "3/11/2012 2:53:58 AM"

更新:那么当原始字符串包含时区偏移量时,DateTime.Parse和DateTimeOffset.Parse之间的区别是什么?考虑这两个例子,假设您当前的时区是太平洋时间:

// Example 1: DateTime.Parse(String)
DateTime dt = DateTime.Parse("2012-03-11T06:00:00-04:00");
Console.WriteLine(dt.ToString("o"));  // 2012-03-11T03:00:00.0000000-07:00

DateTime.Parse使用偏移量将解析的日期和时间调整为当地时间.请注意,时间从早上6点变为凌晨3点,反映了从东部夏令时(UTC-04:00)到太平洋夏令时(UTC-07:00)的转换.在您的问题中,时间已更改,因为DateTime.Parse会自动将时间从太平洋标准时间(UTC-08:00)调整为太平洋夏令时(UTC-07:00).

// Example 2: DateTimeOffset.Parse(String)
DateTimeOffset dto = DateTimeOffset.Parse("2012-03-11T06:00:00-04:00");
Console.WriteLine(dto.DateTime.ToString("o"));  // 2012-03-11T06:00:00.0000000
Console.WriteLine(dto.Offset);                  // -04:00:00

DateTimeOffset.Parse更简单.它只返回DateTimeOffset值,其DateTime和Offset属性设置为已解析的日期,时间和偏移量.但要注意:如果字符串中的时区偏移量与您要使用的时区不匹配,则需要自己调整生成的日期和时间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读