首页 > 编程 > .NET > 正文

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

2024-07-10 13:11:16
字体:
来源:转载
供稿:网友

  日期转换成字符串几乎是每个项目都要进行的工作,无论您用什么开发工具。在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 这种方式是唯一可用的方案。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表