.net 日期时间转换格式错误(日光?)

.net 日期时间转换格式错误(日光?),.net,vb.net,datetime,.net,Vb.net,Datetime,我调用一个soap web服务,它返回一个xml,其中包含以下格式的生日: 1948-03-13+02:00 我还有一个助手类,它将XML转换为对象,以便我可以访问它 这通常没有问题,但是在这个特定的情况下,当我测试变量的值(一个DateTime变量)时,它返回 12/03/1948 23.00.00 它似乎可以删除2个小时,因此当我保存日期时,可能会存储错误的日期 可能是夏令时的问题吗?在那个时期的意大利,日光发生了变化 helper类是一个自动生成的代码。问题出在该字段中: Privat

我调用一个soap web服务,它返回一个xml,其中包含以下格式的生日:

1948-03-13+02:00

我还有一个助手类,它将XML转换为对象,以便我可以访问它

这通常没有问题,但是在这个特定的情况下,当我测试变量的值(一个
DateTime
变量)时,它返回

12/03/1948 23.00.00
它似乎可以删除2个小时,因此当我保存日期时,可能会存储错误的日期

可能是夏令时的问题吗?在那个时期的意大利,日光发生了变化

helper类是一个自动生成的代码。问题出在该字段中:

Private dataRegolarizzazioneField As Date
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType:="date")>  _
    Public Property dataRegolarizzazione() As Date
        Get
            Return Me.dataRegolarizzazioneField
        End Get
        Set
            Me.dataRegolarizzazioneField = value
        End Set
    End Property
Private dataRegolarizzazioneField As Date
_
公共属性dataRegolarizzazione()作为日期
得到
返回我。dataRegolarizzazioneField
结束
设置
Me.dataRegolarizzazioneField=值
端集
端属性

也许,这是一种类型,而不是日光。


当我处理时间和日期时,我使用的是
DateTimeOffset
,我没有这样的问题。更改为DateTimeOffset查看它是否有效。

此人的生日是1948年的夏时制转换日

许多日期/时间数据类型的应用程序受益于对时区的勤奋处理。出生日期并非如此。想想看:如果你的生日是3月27日,你出生在意大利,你去澳大利亚旅行,你的生日是3月27日,在澳大利亚,一整天。为了计算您的年龄,我们将您的出生日期与当地时间的当前日期进行比较

所以,你需要使用当地时间。去掉时区偏移。如果输入字符串的格式一致,则可以使用此选项

 const string pattern = 'yyyy-MM-dd';
 datestring = datestring.Substring(0,10);
 DateTime birthdate;
 if (!DateTime.TryParseExact(datestring, 
                             pattern,
                             null,
                             DateTimeStyles.AssumeLocal, 
                             out birthdate)) {
   /* handle date parse error */
 }


如果将其存储在SQL数据库中,请使用该列的
DATE
数据类型;它通常不考虑当前时区。

您能展示一个演示您的问题的示例吗?“我还有一个帮助器类,它可以将XML转换为对象,以便我可以访问它。”-听起来该类中的代码可能有问题,但我们需要查看代码。还有,你到底希望结果是什么?你想对+02:00做什么?抱歉,现在我编辑了主帖@jonsket nothing,我只想要正确的日期好吧,我想使用
DateTimeOffset
会有所帮助。(您也应该能够使用自动实现的属性,这将使您的代码更加简单。)我认为您指的是夏令时。日光量不影响计算机计算日期和时间的方式:)。
const string pattern='YYYY-MM-dd'里面有错误的日期,它如何工作?是的,对不起,我的错误。它应该是
yyyy-MM-dd
。请查看我的编辑。另外,如果我执行object.Tostring()操作,它会获取昨天的日期,因此它不起作用