日期格式问题

Ale*_*der 0 vb.net asp.net

我不能将日期值更改为我想要的格式.这是我的代码.当我执行此代码时,我看到mydate为mm/DD/yyyy格式.我想念什么?

 Dim dateString As String = Date.Now.ToString("dd.MM.yyyy")    
 Dim myDate As Date = Date.ParseExact(dateString, "dd.MM.yyyy", Nothing)
Run Code Online (Sandbox Code Playgroud)

Fre*_*örk 11

你什么都不错过.myDate是一个Date内部存储日期作为数字形式(UInt64更准确地说).它不存储日期的字符串表示形式,并且它本身没有格式.当它显示为字符串(例如使用ToString方法)时,如果没有指定日期格式,它将使用当前文化的默认格式,在您的情况下似乎是MM/dd/yyyy.

更新

我会尽力使这一点更清楚.

你所经历的实际上是一个相当普遍的误解.你真的需要在日期日期字符串表示之间做出改变.这是两件不同的事情.

Date(这实际上可以一个DateTime没有时间的信息,所以我将把DateTime这里)存储日期和时间内为一个数字.目前,我在哪里,这个数字是9857259848526375120.这是当前日期和时间,如DateTime对象内部所示.

虽然这个值对代码非常有用,但对我们这些人来说没什么意义.我们通过决定在不同国家以不同方式写日期,使问题更加复杂化.所以,在瑞典,今天的日期将被写为"2009-09-17",而在土耳其,它将是"17.09.2009".

因此,为了使事情更容易为我们,每当DateTime(在丝网印刷等当VS调试器)对象显示为文本,数值被格式化为使用一些日期格式的字符串.这种格式在不同国家会有所不同.如果在显示字符串时未指定格式,则将使用当前区域性的默认格式.例如,在VS监视窗口中就是这种情况.

如果您希望获取DateTime根据特定区域性格式化的对象的字符串表示形式,可以将其传递给ToString方法:

myDate.ToString(CultureInfo.GetCultureInfo("tr-TR"))
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您需要将日期转换为其他特定格式,则可以使用格式字符串来实现:

Dim formattedDate1 As String = myDate.ToString("dd'/'MM'/'yyyy")
Dim formattedDate2 As String = myDate.ToString("dd.MM.yyyy")
Run Code Online (Sandbox Code Playgroud)

注意格式字符串中/字符周围的单引号; 它们是必需的,因为系统默认将/解释为当前文化的日期分隔符的占位符.如果你想强制格式化的日期使用/字符而不是当前文化的普通分隔符(瑞典的' - ',土耳其的'.',你需要像我的例子那样逃避它.