У меня есть дата, представленная как целое число, например 20140820
, и я хочу проанализировать ее как datetime, например 2014.08.20.
Нужно ли анализировать каждое целочисленное значение (2014) (08) (02) с помощью индекса или проще?
У меня есть дата, представленная как целое число, например 20140820
, и я хочу проанализировать ее как datetime, например 2014.08.20.
Нужно ли анализировать каждое целочисленное значение (2014) (08) (02) с помощью индекса или проще?
Если ваш 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);
Самый простой и эффективный способ - это что-то вроде:
int date = 20140820;
int d = date % 100;
int m = (date / 100) % 100;
int y = date / 10000;
var result = new DateTime(y, m, d);
Попробуйте следующее: -
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'