Распечатайте DateTime с тем же форматом культуры, с которого он был проанализирован, но с более коротким компонентом года - PullRequest
0 голосов
/ 28 июня 2018

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

Допустим, я беру дату в США 2 января 2018 года: "1/2/2018".

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

Например:

dd/mm/yyyy -> dd/mm/yy
mm/dd/yyyy -> mm/dd/yy
yyyy-mm-dd -> yy-mm-dd

Я хочу взять переменную DateTime и вернуть ту же переменную даты в той же культуре, но с годом в формате yy.

Это нормально для каждой культуры, если я делаю что-то подобное?

var year = mydate.ToShortDate.ToString("yy");
var date  = mydate.ToShortDate.Substring(0, mydate.Count() - 4) + year;

Мой вклад будет .ToShortDate () во многих культурах

1 Ответ

0 голосов
/ 29 июня 2018

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

Предположим, что дата хранится в DateTime. Как оно туда попало, не важно.

Теперь задача состоит в том, чтобы преобразовать его в строковое представление в соответствии с форматом краткой даты, каким бы оно ни было, но с yyyy вместо yy.

http://www.basicdatepicker.com/samples/cultureinfo.aspx

Похоже, что форматы коротких дат содержат yyyy или yy почти во всех культурах, поэтому давайте сделаем это предположение.

Теперь преобразование можно выполнить таким образом.

var sampleDate = new DateTime(1992, 12, 31);
var formatString = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
var newFormatString = formatString.Replace("yyyy", "yy");
var sampleDateAsString = sampleDate.ToString(newFormatString);

Если исходная строка формата не содержит «гггг», тогда новая строка формата будет такой же, как и исходная.

Конечно, вы можете получить ShortDatePattern для любой культуры, а не только для текущей культуры, как показано здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...