我的问题是,当我找回日期时,它会以这种格式提供给我:
lastseenstatus=rsprefobj("lastseentstamp")
19-07-2014 15:31:32
我想要7/19/2014 3:31:32 PM
格式,AM/PM
完整无缺。
请帮助..
答案 0 :(得分:3)
首先,您需要确定rsprefobj("lastseentstamp")
的数据类型:
MsgBox TypeName(rsprefobj("lastseentstamp"))
如果是字符串,则需要先将其转换为日期时间值:
lastseenstatus = CDate(rsprefobj("lastseentstamp"))
如果您希望根据系统的区域设置格式化日期,请使用建议FormatDateTime()
的@John功能:
MsgBox FormatDateTime(lastseenstatus)
如果您需要一个不同的日期格式而不管系统的区域设置,您必须自己构建格式化的字符串:
Function LPad(v) : LPad = Right("00" & v, 2) : End Function
Function FormatDate(d)
formattedDate = Month(d) & "/" & LPad(Day(d)) & "/" & Year(d) & " " & _
((Hour(d) + 23) Mod 12 + 1) & ":" & LPad(Minute(d)) & ":" & _
LPad(Second(d))
If Hour(d) < 12 Then
formattedDate = formattedDate & " AM"
Else
formattedDate = formattedDate & " PM"
End If
FormatDate = formattedDate
End Function
MsgBox FormatDate(lastseenstatus)
或使用.Net StringBuilder
类:
Set sb = CreateObject("System.Text.StringBuilder")
sb.AppendFormat "{0:M\/dd\/yyyy h:mm:ss tt}", lastseenstatus
MsgBox sb.ToString()
在我的测试中,我无法使tt
格式说明符起作用,所以你可能不得不求助于这样的事情:
Set sb = CreateObject("System.Text.StringBuilder")
If Hour(lastseenstatus) < 12 Then
am_pm = "AM"
Else
am_pm = "PM"
End If
sb.AppendFormat_5 Nothing, "{0:M\/dd\/yyyy h:mm:ss} {1}", _
Array(lastseenstatus, am_pm)
MsgBox sb.ToString()
答案 1 :(得分:0)
我假设您使用的是VBScript,而不是像标记的那样使用VB.NET。
使用FormatDateTime(lastseenstatus)
。
那应该给你格式&#34; 2/16/2010 1:45:00 PM&#34;。