关于ASP.NET中日期转换的心得

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

日期转换成字符串几乎是每个项目都要进行的工作,无论您用什么开发工具。在SQL Server中使用Convert或Cast可以方便的转换日期为各种格式的字符串,在PB中可以用string(date,"yyyy-mm-dd")一步到位。在asp.net中呢?我发现总是不如我意,如果使用yyyy-mm-dd这种方式转换:

BeginDate.SelectedDate.ToString("yyyy-mm-dd",DateTimeFormatInfo.InvariantInfo)

那么得到到是:2004-00-23

为什么是 00 呢?我百思不得其解。为此,我仔细查看了帮助。下面的代码来自asp.net的联机帮助。

下面的示例说明用不变量 DateTimeFormatInfo 设定 DateTime 值的格式的不同方法。

[Visual Basic]

Option Explicit

Option Strict

Imports System

Imports System.Globalization

Public Class MainClass

Public Shared Sub Main()

Dim dt As DateTime = DateTime.Now

Dim myformat() As String ={"d", "D", _

"f", "F", _

"g", "G", _

"m", _

"r", _

"s", _

"t", "T", _

"u", "U", _

"y", _

"dddd, MMMM dd yyyy", _

"ddd, MMM d ""'""yy", _

"dddd, MMMM dd", _

"M/yy", _

"dd-MM-yy"}

Dim mydate As String

Dim i As Integer

For i = 0 To myformat.Length - 1

mydate = dt.ToString(myformat(i), DateTimeFormatInfo.InvariantInfo)

Console.WriteLine(String.Concat(myformat(i), " :", mydate))

Next i

' Output.

'

' d :08/17/2000

' D :Thursday, August 17, 2000

' f :Thursday, August 17, 2000 16:32

' F :Thursday, August 17, 2000 16:32:32

' g :08/17/2000 16:32

' G :08/17/2000 16:32:32

' m :August 17

' r :Thu, 17 Aug 2000 23:32:32 GMT

' s :2000-08-17T16:32:32

' t :16:32

' T :16:32:32

' u :2000-08-17 23:32:32Z

' U :Thursday, August 17, 2000 23:32:32

' y :August, 2000

' dddd, MMMM dd yyyy :Thursday, August 17 2000

' ddd, MMM d "'"yy :Thu, Aug 17 '00

' dddd, MMMM dd :Thursday, August 17

' M/yy :8/00

' dd-MM-yy :17-08-00

End Sub 'Main

End Class 'MainClass

没错啊,人家写的也是 yyyy-mm-dd 格式,可是人家可以正确返回结果,我的就不可以。慢点,我再观察一下。难道……难道是大小写的缘故?没错,asp.net刚发布的时候,就宣布过大小写区分要逐步被提到重要位置上来,彻底改变asp时代大小写不分的混乱状态。也就是说,这里的 mm 要写成 MM 才可以。我抱着试试看的心理修改了,一遍通过,可以成功的返回 2004-08-23 了。求知不能就此结束,我马上又全部改成大写:YYYY-MM-DD,结果发现返回 YYYY-08-DD ,也就是说,yyyy-MM-dd 这种方式是唯一可用的方案。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航