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

时间:2016-06-27 06:39:36

标签: c# datetime format

我有来自XML输入的DateTimeStamp。它看起来像这样Date createdDate = new Date(); Calendar time = Calendar.getInstance(); time.set(Calendar.HOUR_OF_DAY, 0); time.set(Calendar.MINUTE, 0); time.set(Calendar.SECOND, 0); time.set(Calendar.MILLISECOND, 0); createdDate = time.getTime();

我需要在转换为"2016-06-13T15:02:41+0800"格式后将此值插入db。我怎样才能在c#中做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以将String转换为DateTime,就像这样

 string date = "2016-06-13T15:02:41+0800";
 DateTime dateTime = Convert.ToDateTime(date);

这将返回值:13-06-2016 12:32:41

我希望这能解决你的问题

答案 1 :(得分:1)

已经标记了您的答案(我认为所选答案有点错误)但我必须指出一些事情,如果你让我......

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

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

首先转换为UTC时间,等于2016-06-13 07:02:41。之后,它会将本地时区偏移量添加到 值。在Ravi Kanth's case中,它看起来像UTC +05:30 ..

我建议您将其解析为DateTimeOffset,而不是解析为DateTime,而不是更适合您的字符串。

var s = "2016-06-13T15:02:41+0800";
var dto = DateTimeOffset.ParseExact(s, "yyyy-MM-ddTHH:mm:sszzz", 
                                    CultureInfo.InvariantCulture);

现在您的DateTimeOffset13.06.2016 15:02:41 +08:00,您可以将其称为UtcDateTimeLocalDateTimeDateTime个属性中的任何一个,无论您想要哪个

  

我需要在转换为" YYYY-MM-DD后将此值插入db   HH:MM:SS"格式。

等一下..你准确使用哪个数据库? 是否有bad habit to kick as choosing the wrong data type。如果您使用流行的RMDS之一,如Sql Server,Oracle,DB2等,它们都具有相关的日期时间类型。在这种情况下,请勿使用字符串表示形式插入DateTime值,直接插入优先级prepared statements。如果你使用像SQLite这样的数据库,那不是一个例子,因为SQLite将TEXTINTEGER的DateTime值保存为Unix Time