我有来自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#中做到这一点?
答案 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);
现在您的DateTimeOffset
为13.06.2016 15:02:41 +08:00
,您可以将其称为UtcDateTime
,LocalDateTime
或DateTime
个属性中的任何一个,无论您想要哪个
我需要在转换为" 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将TEXT
或INTEGER
的DateTime值保存为Unix Time。