Как преобразовать DateTime в / из определенного строкового формата (в обоих направлениях, например, заданный формат «yyyyMMdd»)?

132

У меня проблема с преобразованием даты и времени в строковом формате, но я не могу преобразовать его с помощью "yyyyMMdd"формата.

Мой код:

string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");

for (int i = 0; i < tpocinfo.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
            claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
            claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
            claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
        }
        break;
Ashutosh
источник
В каком формате сейчас находится строка даты и времени?
Falle1234
11
И какое отношение ваш фрагмент кода к вопросу?
Дарин Димитров
2
Я немного не понимаю; вы работаете со строковым представлением даты или объектом DateTime? Предполагая, что это объект DateTime, вы можете просто вызвать obj.ToString("yyyyMMdd");
Натан Тейлор,
На самом деле TPOCDate2 уже является переменной, и я просто хочу преобразовать элементы в tpoc2 [0] в формат yyyyMMdd. Надеюсь, это ответит на ваш вопрос
Ашутош
Вы застряли где-то?
Дариуш Возняк

Ответы:

224

если у вас есть дата в строке в формате «ддММгггг» и вы хотите преобразовать ее в «ггггММдд», вы можете сделать следующее:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");
Falle1234
источник
4
Застрял в вашем коде, этот работал хорошо DateTime.TryParse (stringValue, out outputInDateTime);
DJ '15
64

Дата и время анализа:

Чтобы проанализировать DateTime, используйте один из следующих методов:

В качестве альтернативы вы можете использовать шаблон try-parse :

Узнайте больше о пользовательских форматах даты и времени .

Преобразование DateTime в строку:

Чтобы вернуть DateTime в виде строки в формате «ггггММдд», вы можете использовать ToString метод.

  • Пример фрагмента кода: string date = DateTime.ToString("yyyyMMdd");
  • Примечание верхнего регистр M «ы см месяцев и в нижнем регистре м » с до минут.

Ваш случай:

В вашем случае, если вы не хотите обрабатывать сценарий, когда дата имеет другой формат или отсутствует, было бы наиболее удобно использовать ParseExact:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);
Дариуш Возняк
источник
7
Это старая тема, но для тех, кто ищет, приведенная выше ссылка "формат с учетом культуры" теперь не работает. Вот одна из текущих и информативных строк
40

Вы можете преобразовать свою строку в такое DateTimeзначение:

DateTime date = DateTime.Parse(something);

Вы можете преобразовать DateTimeзначение в форматированную строку следующим образом:

date.ToString("yyyyMMdd");
SLaks
источник
11

Строка в формате даты yyyy-MM-dd: Пример:

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   
NSiva
источник
10

Если вы хотите иметь DATE как строку с TIME . Мы можем сделать так:

    //Date and Time is taking as current system Date-Time    
    DateTime.Now.ToString("yyyyMMdd-HHmmss");
Аниш
источник
7
минуты должны быть маленькими "м"!? "yyyyMMdd-HHmmss"
CeOnSql
6

Используйте, DateTime.TryParseExact()если вы хотите сопоставить с определенным форматом даты

   string format = "yyyyMMdd"; 
    DateTime dateTime;
    DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                             DateTimeStyles.None, out dateTime);
Мудассир Хасан
источник
5

Вы могли бы использовать DateTime.TryParse()вместо DateTime.Parse().
У TryParse()вас есть возвращаемое значение, если оно было успешным, и Parse()вам нужно обработать исключение

Питер
источник
5

Просто делай так.

string yourFormat = DateTime.Now.ToString("yyyyMMdd");

Удачного кодирования :)

Prashant-Systematix
источник
3

нет это строка с гггг / мм / дд, и мне нужно в формате ггггMMdd

Если вам нужно только удалить косые черты из строки, не замените ли вы их?

Пример:

myDateString = "2013/03/28";
myDateString = myDateString.Replace("/", "");

myDateString теперь должно быть «20130328».

Меньше перегиба :)

SergioMSCosta
источник
3

Это простой способ конвертировать в формат

 DateTime.Now.ToString("yyyyMMdd");
Манодж Кумар
источник
2

Судя по именам свойств, похоже, что вы пытаетесь преобразовать строку в дату путем присвоения:

claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();

Вероятно, это связано с текущей культурой пользовательского интерфейса, и поэтому он не может правильно интерпретировать строку даты при назначении.

Питер
источник
нет это строка с гггг / мм / дд, и мне нужно в формате ггггMMdd
Ашутош
и во время выполнения claimantAuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString ("yyyyMMdd"); это дает некоторые ошибки сборки. Наилучшее перегруженное соответствие метода для 'string.ToString (System.IFormatProvider)' содержит недопустимые аргументы
Ашутош,
@Matt - правда? Вы отредактировали ответ за 4 года, который даже не был отмечен как ответ, чтобы добавить вкладку? Это серьезный и тяжелый случай ОКР.
Питер
1

Из C # 6:

var dateTimeUtcAsString = $"{DateTime.UtcNow:o}";

Результат будет: «2019-01-15T11: 46: 33.2752667Z»

Бен Альфаси
источник
0

Более простой способ, с которым я столкнулся при поиске этого ответа;

string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));
Энрике Ортис Санчес
источник
Как насчет того, чтобы у меня была ценность DateTime? Как DateTime newDate = DateTime.Parse(Session["date"].ToString());?
WTFZane
0

Вы можете попробовать эти коды

claimantAuxillaryRecord.TPOCDate2  = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd"); 

Или

claimantAuxillaryRecord.TPOCDate2 = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd hh:mm:ss"); 
А. Залонис
источник
1
Ради любви к Богу (наш лорд-спаситель Харамбе) никогда не используйте Convert.ToDateTime ... Эта штука такая медленная (~ 100 мс)! Просто используйте ParseExact или TryParse - дааааай быстрее !!!
Кошера