2013-09-16 63 views
0

我需要將格式爲yyyyMMdd的字符串日期轉換爲格式爲MM/dd/yyyy的日期字符串。最好的辦法是什麼?將日期字符串轉換爲具有不同格式的另一個日期字符串

我這樣做:

DateTime.ParseExact(dateString, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy") 

但我不知道,我認爲必須有一個更好的辦法。你怎麼看?

+2

你的方式是我認爲最好的方式。 –

+1

還沒有想過比這更好的方式:) –

+3

是否有任何理由,你需要_reformat_一個字符串?聽起來好像你實際上是從數據庫格式化「日期字符串」,我是對的嗎?然後把它作爲'datetime'放在首位。 –

回答

2

你在做什麼很好。

也許您可以通過使用DateTime.TryParseExact併成功解析,以其他格式對DateTime對象進行格式化來改善它。

string dateString = "20130916"; 
DateTime parsedDateTime; 
string formattedDate; 
if(DateTime.TryParseExact(dateString, "yyyyMMdd", 
        CultureInfo.InvariantCulture, 
        DateTimeStyles.None, 
        out parsedDateTime)) 
{ 
    formattedDate = parsedDateTime.ToString("MM/dd/yyyy"); 
} 
else 
{ 
     Console.WriteLine("Parsing failed"); 
} 
1

你的方式是完全OK.You可能會嘗試這樣做: -

string res = "20130908"; 
DateTime d = DateTime.ParseExact(res, "yyyyMMdd", CultureInfo.InvariantCulture); 
Console.WriteLine(d.ToString("MM/dd/yyyy")); 

剛剛從MSDN參考: -

的DateTime.ParseExact(字符串,字符串,的IFormatProvider )方法分析 日期的字符串表示形式,該格式必須採用格式參數定義的格式 。

+0

這個問題指定了'yyyyMMdd' ...你的例子和'yyyyddMM'完全一樣嗎? – crashmstr

+0

@crashmstr: - 更新了我的答案!謝謝 –

0
string date = "01/08/2008"; 
DateTime dt = Convert.ToDateTime(date);  //or  
DateTime dt = DateTime.Parse(date, culture, System.Globalization.DateTimeStyles.AssumeLocal); //or  
// create date time 2008-03-09 16:05:07.123 
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123); //or  

現在格式,你dt喜歡...

String.Format("{0:y yy yyy yyyy}", dt); // "8 08 008 2008" year 
String.Format("{0:M MM MMM MMMM}", dt); // "3 03 Mar March" month 
String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day 
String.Format("{0:h hh H HH}",  dt); // "4 04 16 16"  hour 12/24 
String.Format("{0:m mm}",   dt); // "5 05"   minute 
String.Format("{0:s ss}",   dt); // "7 07"   second 
String.Format("{0:f ff fff ffff}", dt); // "1 12 123 1230" sec.fraction 
String.Format("{0:F FF FFF FFFF}", dt); // "1 12 123 123" without zeroes 
String.Format("{0:t tt}",   dt); // "P PM"   A.M. or P.M. 
String.Format("{0:z zz zzz}",  dt); // "-6 -06 -06:00" time zone 

格式化部分從作爲從www.csharp-examples.net

0

你的代碼就是最好的(當然更好用TryParseExact),但看起來像您的輸入字符串格式正確(可轉換爲DateTime,你只是想重新格式化它,我覺得使用一些字符串方法會有所幫助。但我想在這裏使用Regex

string output = Regex.Replace(input, "^(\\d{4})(\\d{2})(\\d{2})$", "$2/$3/$1"); 
//E.g 
input = "20130920"; 
output = "09/20/2013"; 
相關問題