是否可以将日期4位数年份2位数月份和2位数日期转换为dd(3位数月份)4位数年份?
现在,当用户输入YYYYMMDD时,我输入了日期“使用日期”。我更喜欢使用日历输入,因为它保持日期一致
答案 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) & " "
FinalDate = FinalDate & MonthName(Month(TheDate),1) & " "
FinalDate = FinalDate & DatePart("yyyy", TheDate)
Response.write "DEBUG: Required Date = " & FinalDate