2016-06-14 82 views
0

這是一個String日期:解析字符串日期以特定格式

dob = reader.GetValue(7).ToString();` return like "12/2/2012" 

但我想轉換爲這種格式"2012212"(它傳遞之前),我已經試過

string newDate = dob.ToString("yyyMMdd") 

但我得到出現以下錯誤:

The best overloaded method match for 'string.ToString(System.IFormatProvider)has some invalid arguments

有什麼想法嗎?

+0

爲什麼叫'ToString'在'reader.GetValue(7)'?爲什麼不把它轉換爲'DateTime'? –

+0

,因爲'dob'被聲明爲字符串。 –

+0

reader.GetDateTime(7)返回DateTime對象嗎? – DespeiL

回答

1

Not Exact way of getting output but it will work.

string dob = "12/2/2012"; 
    string[] d1 = dob.Split('/'); 
    string s = d1[2] + d1[1] + d1[0]; 
+0

是的,謝謝...它訣竅 –

+0

很高興建議你。 –

1

你可以使用SqlDataReader.GetDateTime如果底層的返回類型爲DateTime

然後你只需要..

reader.GetDateTime(7).ToString("yyyyMdd"); 

在情況下,如果它被存儲並獲得作爲一個字符串,那麼我建議轉換爲DateTime首先,然後查找特定的格式。

var date = DateTime.ParseExact(dob, "dd/M/yyyy",CultureInfo.InvariantCulture); 
    var formattedDate = date.ToString("yyyyMdd"); 
+0

此代碼返回「{2/17/1993 12:00:00 AM}」 –

+0

@SaifManea哪行代碼?它應該返回'2012212' –

0
DateTime.ParseExact(reader.GetValue(7), "dd/M/dd", System.Globalization.CultureInfo.InvariantCulture).ToString("yyyyMMdd"); 
-1

你可以試試下面的方法來字符串轉換爲日期。

IFormatProvider culture = new CultureInfo("en-US", true); 
dob = DateTime.ParseExact(reader.GetValue(7).ToString(), "dd/MM/yyyy", culture).ToString("yyyyMMdd"); 

謝謝。

+0

對於這種情況下的日期格式,你可以定義文化?你認真嗎? – DespeiL

0

如果您有與格式「DDMMYYYY」字符串的日期,並希望將其轉換爲「年月日」,你可以這樣做:

DateTime dt = DateTime.ParseExact(dob, "ddMMyyyy", 
            CultureInfo.InvariantCulture); 
dt.ToString("yyyyMMdd"); 
相關問題