如何获取日期和时间(VBS)

22

如何使用VBS获取当前日期和时间(适用于Windows),我不是在寻找用于ASP/ASPX或网页的VBScript。

答案:

Dim dtmNow 
dtmNow = Now 
WScript.Echo dtmNow 

http://www.w3schools.com/vbscript/func_date.asp - asawyer
asawyer 那是针对网页的。我不是在寻找网页。即使你的答案是正确的,我也不能给你信用,因为你把它添加为评论。 - Cocoa Dev
7个回答

59

以下是在 Windows 脚本主机(WSH)下运行的 vbscript 可以提取的各种日期和时间信息:

Now   = 2/29/2016 1:02:03 PM
Date  = 2/29/2016
Time  = 1:02:03 PM
Timer = 78826.31     ' seconds since midnight

FormatDateTime(Now)                = 2/29/2016 1:02:03 PM
FormatDateTime(Now, vbGeneralDate) = 2/29/2016 1:02:03 PM
FormatDateTime(Now, vbLongDate)    = Monday, February 29, 2016
FormatDateTime(Now, vbShortDate)   = 2/29/2016
FormatDateTime(Now, vbLongTime)    = 1:02:03 PM
FormatDateTime(Now, vbShortTime)   = 13:02

Year(Now)   = 2016
Month(Now)  = 2
Day(Now)    = 29
Hour(Now)   = 13
Minute(Now) = 2
Second(Now) = 3

Year(Date)   = 2016
Month(Date)  = 2
Day(Date)    = 29

Hour(Time)   = 13
Minute(Time) = 2
Second(Time) = 3

Function LPad (str, pad, length)
    LPad = String(length - Len(str), pad) & str
End Function

LPad(Month(Date), "0", 2)    = 02
LPad(Day(Date), "0", 2)      = 29
LPad(Hour(Time), "0", 2)     = 13
LPad(Minute(Time), "0", 2)   = 02
LPad(Second(Time), "0", 2)   = 03

Weekday(Now)                     = 2
WeekdayName(Weekday(Now), True)  = Mon
WeekdayName(Weekday(Now), False) = Monday
WeekdayName(Weekday(Now))        = Monday

MonthName(Month(Now), True)  = Feb
MonthName(Month(Now), False) = February
MonthName(Month(Now))        = February

Set os = GetObject("winmgmts:root\cimv2:Win32_OperatingSystem=@")
os.LocalDateTime = 20131204215346.562000-300
Left(os.LocalDateTime, 4)    = 2013 ' year
Mid(os.LocalDateTime, 5, 2)  = 12   ' month
Mid(os.LocalDateTime, 7, 2)  = 04   ' day
Mid(os.LocalDateTime, 9, 2)  = 21   ' hour
Mid(os.LocalDateTime, 11, 2) = 53   ' minute
Mid(os.LocalDateTime, 13, 2) = 46   ' second

Dim wmi : Set wmi = GetObject("winmgmts:root\cimv2")
Set timeZones = wmi.ExecQuery("SELECT Bias, Caption FROM Win32_TimeZone")
For Each tz In timeZones
    tz.Bias    = -300
    tz.Caption = (UTC-05:00) Eastern Time (US & Canada)
Next

来源


这应该是这个问题的“新”被接受的答案。 - Neoheurist

13
为了补充Numenor的回答,你可以执行以下操作:格式(Now(),"HH:mm:ss") ,使用这些自定义日期/时间格式选项。
对于所有被诱惑将此答案向下投票的人,请注意问题最初被贴上VB和vbscript标签,因此我的答案是针对这些标签的。虽然VB标签已被编辑掉,只留下vbscript标签,但OP接受了这个答案,我认为这意味着它给了他需要的信息。

3
您好,我会尽力为您翻译以下内容:@Ekkehard.Horner,您似乎错过了Joel Coehoorn在2月27日编辑掉的Vb标签。这个问题最初被标记为Vb和VBScript,因此我给出了如上所述的答案,而且由于OP将其标记为答案,因此似乎满足了他的要求。 - Mark Hall
2
我只希望现在的问题能得到正确的答案。我不应该投反对票,抱歉。 - Ekkehard.Horner

8

如果使用VBScript,请使用FormatDateTime,该函数有5个数字参数,可为您提供5种预定义格式之一。但这并不是很好。

  FormatDateTime(now, 4)
  08:12

3

这是一个旧问题,但这里的许多答案使用VB或VBA。标签显示vbscript(这就是我来到这里的原因)。

由于VB非常广泛,可以有很多应用程序,所以这里的答案有点混乱。我的答案仅针对vbscript,并完成了我在vbscript中格式化YYYYMMDD的情况。

分享我学到的:

  1. vbscript中定义了所有DateTime函数,可以在这里进行混合和匹配,以获得您想要的结果
  2. 我需要获取当前日期并将其格式化为 YYYYMMDD ,为此,我只需要连接 DatePart 即可获取当前日期: date = DatePart("yyyy",Date) & DatePart("m",Date) & DatePart("d",Date)

就这些了,希望能帮助到某人。


然而,DatePart不会返回前导“0”,请参见https://www.w3schools.com/asp/func_datepart.asp上给出的示例:`d=CDate("2010-02-16") DatePart("m",d)`返回2而不是02。因此,您必须像下面的答案一样填充:https://dev59.com/4Ww05IYBdhLWcg3w0VAO#52822934 - maxxyme

2

以24小时制格式显示时间

Right("0" & hour(now),2) & ":" & Right("0" & minute(now),2)   = 01:35
Right("0" & hour(now),2)                                      = 01
Right("0" & minute(now),2)                                    = 35

1

now返回当前日期和时间


1
我可以操作返回的字符串吗?例如,我想要以24小时制显示时间(没有AM/PM)。 - Cocoa Dev

1

还有单独的Time()Date()函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接