Преобразование 2012-06-28T14:30:00-04:00 в формат ггггММДТЧмм в C#

Я хочу преобразовать дату в C#, например, 2012-06-28T14: 30: 00-04: 00, в формат "ггггМмдтччмм", обе даты представлены в виде строки.

string currentDate="2012-06-28T14:30:00-04:00";
string requiredDate="yyyyMMddTHHmm"

Когда я пытаюсь преобразовать эту дату с помощью Convert.ToDateTime (), тогда C# возвращает "20120629T0000-04: 00", но это неверная дата.

3 ответа

Взгляните на стандартные строки формата даты и времени (MSDN). Я думаю, этого может быть достаточно, чтобы использовать только ToString() метод на вашем DateTime экземпляров.

Возможно, вам может понадобиться указать CultureInfo (MSDN здесь) в соответствующих перегрузках методов преобразования. Возможно, сервер и клиентские приложения находятся в разных культурах и / или часовых поясах.

DateTime.Parse("2012-06-28T14:30:00-04:00").ToString("yyyyMMddTHHmm") производит ценность, которую вы можете хотеть.

Обратите внимание, что изменение значения с абсолютного формата ISO8601 на локальный формат ISO8601 должно выполняться осторожно, так как оно меняет значение значения и часто само значение.

Пожалуйста, убедитесь, какой из следующих вариантов вы действительно хотите (и соответственно измените код):

  • просто отбросьте время от значения. Будет производить полуслучайное время, если значения поступают из разных часовых поясов.
  • всегда перемещайте значение в определенный часовой пояс и делайте его локальным для этого часового пояса.
  • всегда перемещать значение в текущий часовой пояс и делать его локальным для текущего часового пояса

Или, может быть, вы ищете что-то совсем другое.

Я не уверен, что это формат, который вы пробуете

string currentDate="2012-06-28T14:30:00-04:00";
DateTime.Parse(currentDate).ToString("o")

Это даст вам 2012-06-29T00:00:00.0000000+05:30

Другие вопросы по тегам