web-dev-qa-db-ja.com

日時としての整数値の解析

20140820のような整数として表された日付があり、2014.08.20のようなdatetimeとして解析したい。

インデックスを使用して各整数値(2014)(08)(02)を解析する必要がありますか、それとももっと簡単な方法がありますか?

21
user1765862

CurrentCultureyyyyMMdd形式を標準日時形式としてサポートしている場合、 _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);
}
_

次に、 .ToString() method like;でDateTimeをフォーマットできます。

_string formattedDateTime = dt.ToString("yyyy.MM.dd", CultureInfo.InvariantCulture);
_
38
Soner Gönül

最も簡単で最もパフォーマンスの良い方法は次のようなものです:

int date = 20140820;

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

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

これを試して :-

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

OR

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'

0