[英]Convert string to date time and format to specific format in string
字符串是20131024174621,它是year = 2013,month = 10,date = 24,hours = 17,minute = 46,seconds = 21。我想做的就是將其轉換並格式化為2013-10-24 17:46 :21。 我已經嘗試過運氣作為下面的代碼,但是它返回這樣的錯誤:
無法將字符串識別為有效的DateTime。
String timestamp = "20131024174621";
String converted = DateTime.Parse(timestamp).ToString("yyyy-MM-dd HH:mm:ss");
正確的做法應該是什么?
您必須使用ParseExact
。
void Main()
{
String timestamp = "20131024174621";
var date = DateTime.ParseExact(timestamp, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
Console.WriteLine (date.ToString("yyyy-MM-dd HH:mm:ss"));
}
輸出:
2013-10-24 17:46:21
DateTime.ParseExact( timestamp, "yyyyMMddHHmmss", CultureInfo.InvariantCulture ).ToString( "yyyy-MM-dd HH:mm:ss" );
由於其他兩個答案是正確的,所以我想指出問題的根源。
DateTime.Parse
方法使用Standard Date and Time Format Strings
。 從How Standard Format Strings Work
在格式化操作中,標准格式字符串只是自定義格式字符串的別名。 使用別名引用自定義格式字符串的好處是,盡管別名保持不變,但自定義格式字符串本身可以變化。 這很重要,因為日期和時間值的字符串表示形式通常會因區域性而異。 例如,“ d”標准格式字符串表示將使用短日期模式顯示日期和時間值。 對於
invariant culture
,此模式為"MM/dd/yyyy"
。 對於fr-FR
文化,它是"dd/MM/yyyy"
。 對於ja-JP
文化,它是"yyyy/MM/dd"
在20131024174621
字符串中,您需要使用yyyyMMddHHmmss
格式來20131024174621
當前的區域性。 看起來您的文化沒有這種格式,這就是為什么您會收到此錯誤。
對於這種非標准格式的字符串,可以使用custom date format
。
任何不是標准日期和時間格式的字符串都將被解釋為自定義日期和時間格式的字符串。
正如我在第三段中所寫的那樣,這種日期格式是基於文化的。 當您擁有這種自定義日期字符串時,在大多數情況下,將DateTime.ParseExact Method (String, String, IFormatProvider)
與特定區域性一起使用是最佳選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.