Я хочу, чтобы преобразовать ниже формат даты и времени в SQL дату и время Чт Апр 07 2016 06:30:00 GMT + 0530 (Индия стандартное время) any у меня есть идея. Спасибо.Как превратить Индию Стандартное время на SQL дату и время в C#
ответ
Если вход является строкой, то вам нужно будет начать разбор даты для конкретной культуры:
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'");
DateTime не поддерживает часовые пояса или смещения. Правильный тип для использования - DateTimeOffset –
Конечно, это будет преобразовывать только форматы. Исходя из этого вопроса, я не сделал вывод о том, что ему также требуется преобразование часового пояса. –
Хранение или передача дат в виде текста в базе данных * не * хорошая идея. Намного лучше и проще использовать параметры даты и избегать конверсий и ошибок форматирования. Например, формат в этом ответе * не * "SQL-совместимый". Он может выглядеть как формат ISO 8601, но отсутствует разделитель 'T'. Он будет проанализирован с использованием языка сервера –
поскольку ваша строка имеет UTC Offset значение, я бы разобрал его до DateTimeOffset
вместо DateTime
с него может провести смещение части.
Но ни DateTime
ни DateTimeOffset
хранит информацию о часовом поясе, вы должны использовать 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}
.
И я хотел бы вставить этот dto
как datetimeoffset
типизированных столбца в SQL Server (с parameterized query, конечно), так как он сохраняет смещение части, а также.
+---------------------------+
| Time zone offset range |
+---------------------------+
| -14:00 through +14:00 |
+---------------------------+
Какая строка ввода? Действительно ли он содержит как «GMT + 0530 (индийское стандартное время)»? Вы пытались выполнить синтаксический анализ на DateTimeOffset перед отправкой на SQL Server? Каков тип столбца? DateTimeOffset (хорошо) или просто DateTime (забудьте timezones?) –