[英]DateTime.ParseExact not working in C#, Date format Conversion not working
[英]Date and time conversion in C# - DateTime.ParseExact() not working as expected
我有日期/時間格式,例如:“1-Mar-13 92230”根據此文件和此鏈接 ,格式如下:“d-MMM-yy Hmmss”,因為:
Day is single digit, 1-30
Month is 3 letter abbreviation, Jan/Mar etc.
Year is 2 digits, eg 12/13
Hour is single digit for 24 hour clock, eg 9, 13 etc. (no 09)
Minute is standard (eg 01, 52)
Second is standard (eg 30, 02)
我正在嘗試在我的程序中運行以下代碼,但我不斷收到“String未被識別為有效DateTime”的錯誤。
string input = "1-Mar-13 92330";
var date = DateTime.ParseExact(input, "d-MMM-yy Hmmss",
System.Globalization.CultureInfo.CurrentCulture);
請幫助,我對DateTime轉換不太熟悉,但我看不出我在哪里出錯了。 謝謝!
更新:這是因為沒有冒號之間的時間無法解析? (例如1-Mar-13 9:22:30被解析,但我有一個外部數據源,無法從Hmmss重寫為H:mm:ss)
你可以修改你的約會日期:
var parts = "1-Mar-13 92230".Split(' ');
if (parts[1].Length == 5)
{
parts[1] = "0" + parts[1];
}
var newDate = parts[0] + " " + parts[1];
var date = DateTime.ParseExact(newDate, "d-MMM-yy HHmmss", System.Globalization.CultureInfo.CurrentCulture);
來自msdn :
如果format是不包含日期或時間分隔符的自定義格式模式(例如“yyyyMMdd HHmm”),請使用provider參數的不變區域性和每個自定義格式說明符的最寬格式。 例如,如果要在格式模式中指定小時數,請指定更寬的形式“HH”,而不是更窄的形式“H”。
所以你可以嘗試:
string input = "1-Mar-13 92330";
var date = DateTime.ParseExact(input, "d-MMM-yy Hmmss",
System.Globalization.CultureInfo.InvariantCulture);
您的輸入字符串必須是以下格式
string input = "1-Mar-13 092330";
如果你回到你的鏈接,它說
H 24-hour clock hour (e.g. 19)
現在H是24小時,它應該以前導0表示。如果不能想象你將如何處理小於9的小時數,即兩位數的情況。
如果不是,你的小時和分鍾和秒必須分開。
string input = "1-Mar-13 9 2330";
var date = DateTime.ParseExact(input, "d-MMM-yy H mmss",
System.Globalization.CultureInfo.InvariantCulture);
你的小時分和秒需要分開,因為它們沒有得到區分。
string input = "1-Mar-13 9 23 30";
var date = DateTime.ParseExact(input, "d-MMM-yy H mm ss", System.Globalization.CultureInfo.CurrentCulture);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.