0

我想使用的代码日期字符串为“DD/MM/YYYY”格式转换下面日期格式

m_dEDate = Format(CDate(strExpiry), "dd/MM/yyyy") 

但系统得到了异常错误 - “参数不正确”。如果区域短日期为“dd-MMM-yy”,则不存在异常错误。

无需手动设置区域,我们如何能够管理由编码转换?

我们应该用System.Globalization?如果是这样,请与我分享样品。

回答

1

使用Date.ParseExact

Dim dateString As String = "06/15/2008" 
    Dim format As String = "MM/dd/yyyy" 
    Dim provider As CultureInfo = CultureInfo.InvariantCulture 
    Dim _NewDate As Date = Date.ParseExact(dateString, format, provider) 
+0

谢谢你,约翰。它会生成“FormatException”错误。 – soclose

+0

哦,我忘了,应该是'MM/DD/yyyy' –

+0

鉴于原代码,它看起来像OP试图*格式*在'MM/DD/yyyy'日,*后*从它解析一些其他格式(我们不知道)。无论是今天早上到目前为止还是缺乏咖啡都在踢。 –

0

它看起来像你想改变日期表示的格式,但你还没有告诉我们什么格式你从转换。 John的代码正确地显示了如何解析一个值 - 但它看起来像是你想要的值目标。假设你的输入是类似于“2012-11-15”,即yyyy-MM-dd。然后你会想:

Dim inputText = "2012-11-15" 
Dim inputFormat = "yyyy-MM-dd" 
Dim outputFormat = "MM/dd/yyyy" 
Dim provider = CultureInfo.InvariantCulture 
Dim parsedDate = Date.ParseExact(inputText, inputFormat, provider) 
Dim outputDate = parsedDate.ToString(outputFormat, provider) 

注意的是,使用固定区域性这里完全隔离您从文化的敏感性。是,其实你想要什么,或者你可能希望根据用户的文化来对待你输入,但不输出?