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

C# 如何在C语言中将印度标准时间转换为SQL日期和时间#,c#,sql-server,datetime,sqldatetime,C#,Sql Server,Datetime,Sqldatetime,我想将下面的日期和时间格式转换为SQL日期和时间 2016年4月7日星期四06:30:00 GMT+0530(印度标准时间) 任何人都知道,谢谢。如果您的输入是字符串,您需要开始解析特定区域性的日期: DateTime dt = DateTime.ParseExact(inputString, System.Globalization.CultureInfo("<your_culture>")); 因为您的字符串有值,我将把它解析为而不是DateTime,因为它可以保存偏移部分

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

如果您的输入是字符串,您需要开始解析特定区域性的日期:

DateTime dt =  DateTime.ParseExact(inputString, System.Globalization.CultureInfo("<your_culture>"));
因为您的字符串有值,我将把它解析为而不是
DateTime
,因为它可以保存偏移部分

但是无论是
DateTime
还是
DateTimeOffset
都不保留时区信息,您应该使用
GMT
(印度标准时间)
部分作为字符串文字分隔符

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}

我将把这个
dto
作为键入的列插入SQLServer(当然有一个),因为它也保存了偏移部分

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

输入字符串是什么?它是否真的同时包含GMT+0530(印度标准时间)?在将其发送到SQL Server之前,是否尝试将其解析为DateTimeOffset?列的类型是什么?DateTimeOffset(好)或仅DateTime(忘记时区?)DateTime不支持时区或偏移。要使用的正确类型是DateTimeOffsetOff course,它将仅在格式之间转换。从这个问题上,我并没有推断出他也需要时区转换。在数据库中存储或传递日期作为文本不是一个好主意。使用日期参数和避免转换和格式错误要好得多,也更容易。例如,此答案中的格式不是“SQL兼容”。它可能看起来像ISO 8601格式,但缺少
T
分隔符。它将使用服务器的区域设置进行解析
+---------------------------+
|   Time zone offset range  |
+---------------------------+
|   -14:00 through +14:00   |
+---------------------------+