2014-01-19 83 views
1

是否可以將日期4位數年份2位數月份和2位數日期轉換爲dd(3位數月份)4位數年份?將yyyymmdd轉換爲dd MMM yyyy

現在我輸入日期「使用日期」作爲用戶輸入YYYYMMDD。我更喜歡使用日曆輸入,因爲它保持日期一致

回答

1

日期/時間值實際上是雙精度浮點數。

所以你可以拿一個數字,並用CDate來表示它的日期。

? CDate(41668.0) 
1/29/2014 

日期值的顯示格式是一個單獨的問題。相同的數字日期值可以以您喜歡的任何格式顯示。

? Format(CDate(41668.0), "yyyymmdd") 
20140129 

? Format(CDate(41668.0), "dd mmm yyyy") 
29 Jan 2014 

但是實際日期值(數)是不變的---這個數字沒有得到「轉換」不管它是如何顯示的。

如果您的問題是用戶使用文本值而不是日期/時間值,則您必須將該文本轉換爲有效的日期/時間值或修改您的應用程序,以便它們輸入日期/時間值而不是文字。

第二種選擇不那麼大驚小怪。但是,如果你堅持日期爲文本,你可以做這樣的事情......

use_date = "20140129" 
' transform it to a string CDate can accept ... 
? Left(use_date, 4) & "-" & Mid(use_date, 5, 2) & "-" & Right(use_date, 2) 
2014-01-29 
' get the date from that string ... 
? CDate(Left(use_date, 4) & "-" & Mid(use_date, 5, 2) & "-" & Right(use_date, 2)) 
1/29/2014 
' finally make it a string in your desired format ... 
? Format(CDate(Left(use_date, 4) & "-" & Mid(use_date, 5, 2) & "-" & Right(use_date, 2)), "dd mmm yyyy") 
29 Jan 2014 
+1

+1的另一個很好的答案。我只希望@ user3210948認識到重要的是將日期存儲在數據庫的實際「日期/時間」列中,然後根據需要對它們進行格式設置(例如,在表單和報告中)。將它們存儲爲'yyyymmdd'(或'yyyy-mm-dd')字符串很尷尬,將它們存儲爲'dd mmm yyyy'字符串是愚蠢的。 –

0

嘗試

DIM DateStr : DateStr = "20140119" 'Your date 

Response.Write "DEBUG: DateStr = " & DateStr & "<br>" 

'Split number so can use Date functions 

DIM NewDate : NewDate = DateSerial(CInt(Mid(DateStr, 1, 4)), CInt(Mid(DateStr, 5, 2)), Mid(DateStr, 7, 2)) 

Response.Write "DEBUG: NewDate = " & NewDate & "<br>" 

TheDate=CDate(NewDate) 

Response.Write "DEBUG: CDate(NewDate) = " & TheDate & "<br>" 

DIM FinalDate: FinalDate = DatePart("d", TheDate) & "&nbsp;" 
FinalDate = FinalDate & MonthName(Month(TheDate),1) & "&nbsp;" 
FinalDate = FinalDate & DatePart("yyyy", TheDate) 


Response.write "DEBUG: Required Date = " & FinalDate 
相關問題