C# 将日期时间从YYYY-MM DDThh:MM:ss转换为YYYY-MM-DD hh:MM:ss格式

C# 将日期时间从YYYY-MM DDThh:MM:ss转换为YYYY-MM-DD hh:MM:ss格式,c#,datetime,format,C#,Datetime,Format,我有来自XML输入的DateTimeStamp。看起来是这样的,“2016-06-13T15:02:41+0800” 转换成“YYYY-MM-DD hh:MM:ss”格式后,我需要将此值插入db。如何在c#中执行此操作?您可以像这样将字符串转换为DateTime string date = "2016-06-13T15:02:41+0800"; DateTime dateTime = Convert.ToDateTime(date); 这将返回值为:13-06-2016 12:32:41

我有来自XML输入的DateTimeStamp。看起来是这样的,
“2016-06-13T15:02:41+0800”


转换成
“YYYY-MM-DD hh:MM:ss”
格式后,我需要将此值插入db。如何在c#中执行此操作?

您可以像这样将字符串转换为DateTime

 string date = "2016-06-13T15:02:41+0800";
 DateTime dateTime = Convert.ToDateTime(date);
这将返回值为:13-06-2016 12:32:41


我希望这将解决您的问题

您可以像这样将字符串转换为DateTime

 string date = "2016-06-13T15:02:41+0800";
 DateTime dateTime = Convert.ToDateTime(date);
这将返回值为:13-06-2016 12:32:41

我希望这能解决你的问题

你已经标记了你的答案(我认为选择的答案有点错误),但是如果你允许的话,我必须指出一些事情

首先,在这种情况下,使用
Convert.ToDateTime
不是一个好方法。为什么?

因为此方法返回一个
DateTime
实例,该实例的
Kind
属性是
Local
,因为字符串具有时区信息。这意味着此
DateTime
实例的日期和时间将转换为本地时区中的时间。这就是为什么我强烈怀疑这是你真正想要的价值

它首先转换为
UTC
时间,该时间等于
2016-06-13 07:02:41
。之后,它将向该值添加本地时区偏移量。例如,它看起来像UTC+05:30

与其解析为
DateTime
,我建议您将其解析为更适合您的字符串的格式

var s = "2016-06-13T15:02:41+0800";
var dto = DateTimeOffset.ParseExact(s, "yyyy-MM-ddTHH:mm:sszzz", 
                                    CultureInfo.InvariantCulture);
现在,您有了一个
DateTimeOffset
作为
13.06.2016 15:02:41+08:00
,您可以调用它的一个属性或任意属性

转换为“YYYY-MM-DD”后,我需要将此值插入db hh:mm:ss“格式

等一下。。你到底使用哪个数据库?不要喝啤酒。如果您使用流行的RMD之一,如Sql Server、Oracle、DB2等。。它们都有相关的日期时间类型。在这种情况下,不要插入带有字符串表示形式的
DateTime
值,直接插入带有字符串表示形式的值。如果您使用类似SQLite的db,则情况并非如此,因为SQLite将日期时间值保存为
TEXT
INTEGER

您已经标记了答案(我认为所选答案有点错误),但如果您允许的话,我必须指出几点

首先,在这种情况下,使用
Convert.ToDateTime
不是一个好方法。为什么?

因为此方法返回一个
DateTime
实例,该实例的
Kind
属性是
Local
,因为字符串具有时区信息。这意味着此
DateTime
实例的日期和时间将转换为本地时区中的时间。这就是为什么我强烈怀疑这是你真正想要的价值

它首先转换为
UTC
时间,该时间等于
2016-06-13 07:02:41
。之后,它将向该值添加本地时区偏移量。例如,它看起来像UTC+05:30

与其解析为
DateTime
,我建议您将其解析为更适合您的字符串的格式

var s = "2016-06-13T15:02:41+0800";
var dto = DateTimeOffset.ParseExact(s, "yyyy-MM-ddTHH:mm:sszzz", 
                                    CultureInfo.InvariantCulture);
现在,您有了一个
DateTimeOffset
作为
13.06.2016 15:02:41+08:00
,您可以调用它的一个属性或任意属性

转换为“YYYY-MM-DD”后,我需要将此值插入db hh:mm:ss“格式


等一下。。你到底使用哪个数据库?不要喝啤酒。如果您使用流行的RMD之一,如Sql Server、Oracle、DB2等。。它们都有相关的日期时间类型。在这种情况下,不要插入带有字符串表示形式的
DateTime
值,直接插入带有字符串表示形式的值。如果使用类似SQLite的db,则情况并非如此,因为SQLite将日期时间值保存为
TEXT
INTEGER

最好将DateTime结构的实例传递给数据库,然后传递表示日期时间值的字符串。通过
DateTime.ParseExact
获取
DateTime
值,您可以通过参数化查询将其插入数据库。您最好将DateTime结构的实例传递给数据库,然后传递表示DateTime值的字符串。通过
DateTime.ParseExact
获取
DateTime
值,您可以通过参数化查询将其插入数据库。这与我建议的解决方案相同。非常感谢Ravi Kanth。这对我很有帮助。@SanthoshkumarLM你真的想得到这个值吗?因为这种方法生成的值与XML字符串完全不同。请检查我的答案。嗨@Ravi,上述解决方案一直有效到昨天(6月29日)。但今天,它开始表现得异常顽强。i、 e.今天,我将预期值转换为:2016-07-01T10:00:00+0800后,得到了XML字符串2016-07-01T10:00:00,即(7月1日),但它的解释不同,返回了值2016-01-07 10:00:00(7月1日),因此我的SSIS包没有按预期工作。仅供参考,我的目标数据库是SQL Server这与我建议的解决方案相同。非常感谢Ravi Kanth。这对我很有帮助。@SanthoshkumarLM你真的想得到这个值吗?因为这种方法生成的值与XML字符串完全不同。请检查我的答案。嗨@Ravi,上述解决方案一直有效到昨天(6月29日)。但今天,它开始表现得异常顽强。i、 e.今天,我将预期值转换为:2016-07-01T10:00:00+0800后,得到了XML字符串2016-07-01T10:00:00,即(7月1日),但它的解释不同,返回了值2016-01-07 10:00:00(7月1日),因此我的SSIS包没有按预期工作。仅供参考,我的目标数据库是SQL Server亲爱的Soner,感谢您的解释。正如u所说,上述解决方案一直有效到昨天(6月29日)。但今天,它开始表现得异常顽强。i、 e.今天我得到的XML字符串是2016-07-01T1