String.Format:为什么这段代码不起作用?

oli*_*son 0 c# string.format

我正在使用这段代码获得FormatException

string yyyy = OPENING_DATE.Substring(0, 4);
string mm = OPENING_DATE.Substring(4, 2);
string dd = OPENING_DATE.Substring(6, 2);
ncbaccount.Date_Opened = string.Format("{1}/{2}/{3}",dd,mm,yyyy);
Run Code Online (Sandbox Code Playgroud)

问题:OPENING_DATE就像'20140317'

解决方案:我想要一个像'17/03/2014'这样的字符串

谢谢

Ser*_*kiy 11

您可以使用DateTime.ParseExact并提供日期字符串的格式,而不是拆分日期字符串,然后格式化和解析.

DateTime date = 
     DateTime.ParseExact(OPENING_DATE, "yyyyMMdd", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)


Hen*_*rik 6

将{1}/{2}/{3}替换为{0}/{1}/{2},因为它从0开始.

例如:

string yyyy = OPENING_DATE.Substring(0, 4);
        string mm = OPENING_DATE.Substring(4, 2);
        string dd = OPENING_DATE.Substring(6, 2);
        ncbaccount.Date_Opened = string.Format("{0}/{1}/{2}", dd, mm, yyyy);
Run Code Online (Sandbox Code Playgroud)