строка представляет дату и переформатирует ее - PullRequest
2 голосов
/ 29 февраля 2012

В следующем случае: есть строка с этим форматом «2012-02-25 07:53:04»

Но, в конце концов, я скорее хочу закончить с этим форматом »25-02-2012 07:53:04 "

Я думаю, у меня есть 2 варианта.1 - переформатировать строку и переместить ее, но я не думаю, что это чистый способ сделать это.

Другой способ, о котором я думал, - сохранить исходную строку в параметре даты., а затем записать параметр даты обратно в строку в определенном формате даты.Но возможно ли это сделать?

Ответы [ 6 ]

8 голосов
/ 29 февраля 2012

Сделайте это:

DateTime.Parse("2012-02-25 07:53:04").ToString("dd-MM-yyyy hh:mm:ss");

Имейте в виду, что это не учитывает культуру.И если вам нужно сохранить промежуточный результат, вы можете сделать это так же легко:

var myDate = DateTime.Parse("2012-02-25 07:53:04");
var myDateFormatted = myDate.ToString("dd-MM-yyyy hh:mm:ss");

Наконец, проверьте TryParse(), если вы не можете гарантировать, что формат ввода будетвсегда будет действительным.

2 голосов
/ 29 февраля 2012

Другие предложили использовать Parse - но я бы рекомендовал использовать TryParseExact или ParseExact, также указав инвариантную культуру, если вы действительно не хотите использовать текущую культуру.Например:

string input = "2012-02-25 07:53:04";

DateTime dateTime;
if (!DateTime.TryParseExact(input, "yyyy-MM-dd HH:mm:ss",
                            CultureInfo.InvariantCulture,
                            DateTimeStyles.None,
                            out dateTime))
{
    Console.WriteLine("Couldn't parse value");
}
else
{
    string formatted = dateTime.ToString("dd-MM-yyyy HH:mm:ss",
                                         CultureInfo.InvariantCulture);
    Console.WriteLine("Formatted to: {0}", formatted);
}

В качестве альтернативы можно использовать Время Нода :

string input = "2012-02-25 07:53:04";

// These can be private static readonly fields. They're thread-safe
var inputPattern = LocalDateTimePattern.CreateWithInvariantInfo("yyyy-MM-dd HH:mm:ss");
var outputPattern = LocalDateTimePattern.CreateWithInvariantInfo("dd-MM-yy HH:mm:ss");

var parsed = inputPattern.Parse(input);
if (!parsed.Success)
{
    Console.WriteLine("Couldn't parse value");
}
else
{
    string formatted = outputPattern.Format(parsed.Value);
    Console.WriteLine("Formatted to: {0}", formatted);
}
1 голос
/ 29 февраля 2012

Разобрать как DateTime, а затем переформатировать.Будьте осторожны: всегда используйте IFormatProvider !

0 голосов
/ 29 февраля 2012

Вы можете проанализировать это как объект даты и затем предоставить необходимое форматирование при использовании метода date.ToString:

date.ToString("dd-MM-yyyy hh:mm:ss");
0 голосов
/ 29 февраля 2012

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

0 голосов
/ 29 февраля 2012

Да, вы можете использовать пользовательские строки формата DateTime для анализа и переформатирования объектов DateTime.

DateTime date = DateTime.ParseExact("2012-02-25 07:53:04", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
string formattedDated = date.ToString("dd-MM-yyyy HH:mm:ss");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...