Я хочу преобразовать "ISODate(\"2014-11-13T18:43:33.868Z\")"
в С# datetime ex 2014-11-13 18:43:33
. Значение "ISODate(\"2014-11-13T18:43:33.868Z\")"
взять из коллекции MongoDB.
Пожалуйста помоги.
Если я четко понимаю, только потому, что он пишет ISODate
в вашей строке, это не делает его ISO 8601. Спецификатор стандартного формата "O"
или "o"
соответствует стандарту ISO 8601 и который является "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"
строка пользовательского формата для DateTime
. Это не соответствует вашему строковому формату.
Если ваши строки имеют такой стабильный формат, вы можете использовать пользовательские форматы даты и времени с литеральным разделителем строк;
string s = "ISODate(\"2014-11-13T18:43:33.868Z\")";
string format = "'ISODate(\"'yyyy-MM-dd'T'HH:mm:ss.fff'Z\")'";
DateTime date;
if(DateTime.TryParseExact(s, format, CultureInfo.InvariantCulture,
DateTimeStyles.None, out date))
{
Console.WriteLine (date);
}
Если вы хотите, чтобы строковое представление вашего DateTime
с "2014-11-13 18:43:33"
, вы можете использовать метод DateTime.ToString()
;
date.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
Вы можете сохранить свою дату как объект BsonDateTime, когда вы вытащите ее из базы данных, а затем преобразуйте ее следующим образом:
DateTime dt = bdt.ToUniversalTime();
И вы можете найти этот вопрос полезным, чтобы узнать больше о том, как работает ToUniversalTime()
.