日期轉換成字符串幾乎是每個項目都要進行的工作,無論您用什么開發工具。在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 這種方式是唯一可用的方案。
很多朋友在學習的過程中,喜歡張口就問:這個怎么辦?那個怎么辦?其實開發工具所帶的幫助,要啃。因為幫助所帶的信息完全能滿足您的基本需求。試想,如果幫助寫不好,那么大家都學不會這種開發工具,那么開發商準備把開發工具賣給誰呢?尤其是微軟的幫助,其中文化程度和詳細程度更是到了令人發指的地步。