Анализ целочисленного значения как даты и времени

У меня есть дата, представленная как целое число, например 20140820, и я хочу проанализировать ее как datetime, например 2014.08.20.

Нужно ли анализировать каждое целочисленное значение (2014) (08) (02) с помощью индекса или проще?

Ответ 1

Если ваш CurrentCulture поддерживает формат yyyyMMdd в качестве стандартного формата даты и времени, вы можете просто использовать DateTime.Parse метод вроде:

int i = 20140820;
DateTime dt = DateTime.Parse(i.ToString());

Если он не поддерживается, вам нужно использовать DateTime.ParseExact или DateTime.TryParseExact, чтобы проанализировать его как пользовательский формат даты и времени.

int i = 20140820;
DateTime dt;
if(DateTime.TryParseExact(i.ToString(), "yyyyMMdd", 
                          CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    Console.WriteLine(dt);
}

Затем вы можете отформатировать DateTime с помощью .ToString(), например:

string formattedDateTime = dt.ToString("yyyy.MM.dd", CultureInfo.InvariantCulture);

Ответ 2

Самый простой и эффективный способ - это что-то вроде:

int date = 20140820;

int d = date % 100;
int m = (date / 100) % 100;
int y = date / 10000;

var result = new DateTime(y, m, d);

Ответ 3

Попробуйте следующее: -

string time = "20140820";
DateTime theTime= DateTime.ParseExact(time,
                                    "yyyyMMdd",
                                    CultureInfo.InvariantCulture,
                                    DateTimeStyles.None);

ИЛИ

string str = "20140820";
string[] format = {"yyyyMMdd"};
DateTime date;

DateTime.TryParseExact(str, 
                          format, 
                          System.Globalization.CultureInfo.InvariantCulture,
                          System.Globalization.DateTimeStyles.None, 
                          out date))

теперь date переменная будет требоваться converted date of string '20140820'