2016-06-14 137 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");