2017-10-19 189 views
1

如何將字符串(如"10/19/2017 12:00:00 AM")轉換爲DateTime?我用Convert.ToDateTime()但它給出了一個錯誤;將字符串轉換爲DateTime Asp.Net

字符串未被識別爲有效的DateTime。

如何修復?

+0

'DateTime.Parse(「10/19/2017 12:00:00 AM」)'或ParseExact – CodingYoshi

+1

[將字符串解析爲C#中DateTime的字符串](https://stackoverflow.com/questions/5366285/)因爲'AM'和'PM'指示符用於[12小時制](https:// en.wikipedia.org/wiki/Delphi_Display-date-in-c-sharp) – Fabio

回答

2

您應該使用ParseExact

var result = DateTime.ParseExact("10/19/2017 12:00:00 PM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture); 
+0

感謝它的運作.. :) :) – user111

+0

wikipedia.org/wiki/12-hour_clock),我認爲使用'hh'而不是'HH'說明符會更好。 –

2

Convert.ToDateTime沒有指定格式解析,您需要使用DateTime.ParseExactDateTime.TryParseExact

// DateTime.ParseExact 
DateTime date = DateTime.ParseExact("10/19/2017 12:00:00 PM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture); 

// DateTime.TryParseExact 
DateTime.TryParseExact("10/19/2017 12:00:00 PM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out date); 
+0

由於'AM'和'PM'指示符用於[12小時制](https://en.wikipedia.org/wiki/12-hour_clock),所以我認爲使用'hh'代替'HH'說明符。 –

2
String MyString= "10/19/2017 12:00:00 AM"; 
     DateTime MyDateTime = new DateTime(); 
     MyDateTime = DateTime.ParseExact(MyString, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 

格式變爲如下

d - 沒有前導零的月份的數字日。

dd - 具有前導零的月份的數字日。

ddd - 星期幾的縮寫名稱。

dddd - 星期幾的全名。

f,ff,fff,ffff,fffff,ffffff,fffffff - 第二部分。精度越高Fs越高。

h - 12小時制時鐘,無前導零。

hh - 帶前導零的12小時制時鐘。

H - 24小時制時鐘,沒有前導零。

HH - 帶領先零的24小時制時鐘。

m - 沒有前導零的分鐘數。 毫米 - 帶前導零的分鐘。

M - 沒有前導零的數字月份。

MM - 帶前導零的數字月份。

MMM - 月份的縮寫名稱。

MMMM - 全月名稱。

s - 秒沒有前導零。 ss - 帶前導零的秒。

t - AM/PM但只有第一個字母。 tt - 上午/下午(上午/下午)

y - 帶出世紀和領先零的年份。

yy - 帶出世紀的年份,領先零。

yyyy - 與世紀的一年。

zz - 用+/-設置時區。

+0

你不需要'DateTime MyDateTime = new DateTime();'因爲你將會創建新的日期'DateTime MyDateTime = DateTime.ParseExact(...'就足夠了。 – Fabio