将yyyymmdd转换为dd MMM yyyy

时间:2014-01-19 16:51:44

标签: ms-access

是否可以将日期4位数年份2位数月份和2位数日期转换为dd(3位数月份)4位数年份?

现在,当用户输入YYYYMMDD时,我输入了日期“使用日期”。我更喜欢使用日历输入,因为它保持日期一致

2 个答案:

答案 0 :(得分: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 :(得分: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