[英]Datetime format Issue: String was not recognized as a valid DateTime
我想在C#中將輸入字符串格式化為MM / dd / yyyy hh:mm:ss格式。
輸入字符串的格式為MM/dd/yyyy hh:mm:ss
例如: "04/30/2013 23:00"
我嘗試了Convert.ToDateTime()
函數,但它認為4是日期,3是月份,這不是我想要的。 實際上月是04,日期是03。
我也試過了DateTime.ParseExact()
函數,但是得到了Exception。
我收到錯誤:
字符串未被識別為有效的DateTime。
您的日期時間字符串不包含任何秒數。 您需要以您的格式反映出來(刪除:ss
)。
此外,如果您使用24小時,則需要指定H
而不是h
:
DateTime.ParseExact("04/30/2013 23:00", "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture)
瀏覽此處獲取更多信息:
您可以使用DateTime.ParseExact()
方法。
使用指定的格式和特定於區域性的格式信息將指定的日期和時間字符串表示形式轉換為其DateTime等效形式。 字符串表示的格式必須與指定的格式完全匹配。
DateTime date = DateTime.ParseExact("04/30/2013 23:00",
"MM/dd/yyyy HH:mm",
CultureInfo.InvariantCulture);
這是一個DEMO
。
hh
是從01到12的12小時制, HH
是從00到23的24小時制。
有關更多信息,請查看Custom Date and Time Format Strings
試試這個:
string strTime = "04/30/2013 23:00";
DateTime dtTime;
if(DateTime.TryParseExact(strTime, "MM/dd/yyyy HH:mm",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out dtTime))
{
Console.WriteLine(dtTime);
}
改變文化,嘗試這樣可能對你有用
string[] formats= { "MM/dd/yyyy HH:mm" }
var dateTime = DateTime.ParseExact("04/30/2013 23:00",
formats, new CultureInfo("en-US"), DateTimeStyles.None);
檢查詳細信息: DateTime.ParseExact方法(String,String [],IFormatProvider,DateTimeStyles)
DateTime dt1 = DateTime.ParseExact([YourDate], "dd-MM-yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
注意使用HH(24小時制)而不是hh(12小時制),以及使用InvariantCulture,因為有些文化使用除斜線之外的分隔符。
例如,如果文化是de-DE,則格式“dd / MM / yyyy”會將期間視為分隔符(31.01.2011)。
下面的代碼對我有用:
string _stDate = Convert.ToDateTime(DateTime.Today.AddMonths(-12)).ToString("MM/dd/yyyy");
String format ="MM/dd/yyyy";
IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);
DateTime _Startdate = DateTime.ParseExact(_stDate, format, culture);
如果您的字符串是6/15/2019,這也可能是問題。 DateTime Parse預計它將是06/15/2019。
所以首先用斜線拆分它
var dateParts = "6/15/2019"
var month = dateParts[0].PadLeft(2, '0');
var day = dateParts[1].PadLeft(2, '0');
var year = dateParts[2]
var properFormat = month + "/" +day +"/" + year;
現在你可以使用DateTime.Parse(properFormat,“MM / dd / yyyy”)。 這很奇怪,但這只對我有用。
您可以使用此類型格式(從sql server獲取格式化數據)
格式(轉換(日期時間,'16 / 04/2018 10:52:20',103),'dd / MM / yyyy HH:mm:ss','en-us')
CONVERT(VARCHAR,convert(datetime,'16 / 04/2018 10:52:20',103),120)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.