如何在C#中将印度标准时间转换为SQL日期和时间

时间:2016-04-07 13:02:01

标签: c# sql-server datetime sqldatetime

我想将以下日期和时间格式转换为SQL日期和时间 2016年4月7日星期四06:30:00 GMT + 0530(印度标准时间) 任何人都有想法谢谢。

2 个答案:

答案 0 :(得分:1)

由于您的字符串值为UTC Offset,我会将其解析为DateTimeOffset而不是DateTime,因为可以保留偏移部分。

DateTimeDateTimeOffset都不保留时区信息,您应该使用GMT(India Standard Time)部分作为字符串文字分隔符。

var s = "Thu Apr 07 2016 06:30:00 GMT+0530 (India Standard Time)";
var dto = DateTimeOffset.ParseExact(s, "ddd MMM dd yyyy HH:mm:ss 'GMT'zzz '(India Standard Time)'", 
                                    CultureInfo.InvariantCulture);

现在您的DateTimeOffset{07.04.2016 06:30:00 +05:30}

enter image description here

我会在SQL Server中将此dto作为datetimeoffset类型列插入(当然,parameterized query),因为它也会保存偏移部分。

+---------------------------+
|   Time zone offset range  |
+---------------------------+
|   -14:00 through +14:00   |
+---------------------------+

答案 1 :(得分:-1)

如果您的输入是字符串,则需要开始解析特定文化的日期:

DateTime dt =  DateTime.ParseExact(inputString, System.Globalization.CultureInfo("<your_culture>"));

其中<your_culture>是您所在国家/地区的多个文化名称之一(请参阅http://www.csharp-examples.net/culture-names/

然后你可以把日期作为SQL兼容的字符串,包含简单的引号:

string sqlDate = dt.ToString("'yyyy-MM-dd HH:mm:ss'");