How do I calculate time 4 hours ago in vbs or batch

Posted on 2006-10-26
Last Modified: 2012-06-21
I need to calculate the time 4 hours ago in a batch file or vbs and set it to a system variable.

Time now is 0900
fourHoursAgo = 0500

time now is 0200
fourHoursAgo = 2200
Question by:brian_appliedcpu
  • 3
  • 2
  • 2

Expert Comment

ID: 17812313
Hello Brian,

The code below will popup a message with the time four hours ago in the format you are looking for.  Tell us a little more about the "system variable" part though... Do you mean an enviroment variable?

Nicolas Noakes

***** CODE BELOW ****

Function Pad(s,l,c)
's = String to pad (with prefix)
'l = Target length
'c = Character to pad with
Dim p
Dim i
  p = s
  Do While Len(p) < l
    p = c & p
  Pad = p
End Function

'You can use the following units:
'y = year
'm = month
'd = day
'h = hour
'n = minute
's = second

TgtTime = DateAdd("h", -4, Now())

MsgBox Pad(Hour(TgtTime), 2, "0") & Pad(Minute(TgtTime), 2, "0")

Author Comment

ID: 17812538
Yes, I apologize...

We have a script that calculates the hour as shown below but I need something that can subtract 4 hours from it and set it as an environment variable.

' from the  RunNow.vbs file in the question above, modified to display instead of setting:
Wscript.echo "set YY=" & Right("0" & Year(now()), 2)
Wscript.echo "set MM=" & Right("0" & Month(now()), 2)
Wscript.echo "set DD=" & Right("0" & Day(now()), 2)
Wscript.echo "set Hour=" & Right("0" & Hour(now()), 2)
Wscript.echo "set Min=" & Right("0" & Minute(now()), 2)
Wscript.echo "set Sec=" & Right("0" & Second(now()), 2)
Wscript.echo "set Now=%Hour%-%Min%-Hours"
'  continue the rest


Expert Comment

ID: 17812959
To subtract 4 hours, set a variable (TgtTime in my first post) to the current time less 4 hours by using the vbscript DateAdd function as follows:

TgtTime = DateAdd("h", -4, now())   'This will set TgtTime to the current time less 4 hours

Now replace every instance of now() in your script with TgtTime to make it use the 4-hours-ago time.

I'll have to get back to you re the environment variable part...

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline


Author Comment

ID: 17813601
Not quite sure what I am doing wrong...

Wscript.Echo "set h= " & DatePart("h", now)
Wscript.echo "set TgtTime=" & DateAdd("h", -4, now())

Wscript.echo "set HSub4=" & Right("0" & Hour(TgtTime), 2)
Wscript.echo "set MSub4=" & Right("0" & Minute(TgtTime), 2)
Wscript.echo "set SSub4=" & Right("0" & Second(TgtTime), 2)

Wscript.Echo "set TgtHour= " & DatePart("hour", TgtTime)
Wscript.echo "set TgtHour=%TgtHour%"

Here is the output  ALL 00   ?????

F:\bin>set h= 13

F:\bin>set TgtTime=10/26/2006 9:20:33 AM

F:\bin>set HSub4=00

F:\bin>set MSub4=00

F:\bin>set SSub4=00

Expert Comment

ID: 17814458
TgtTime=DateAdd("h",-4, TimeNow)

Wscript.Echo "set h= " & DatePart("h", TimeNow)
Wscript.echo "set TgtTime=" & TgtTime
Wscript.echo "set HSub4=" & Right("0" & DatePart("h",TgtTime), 2)
Wscript.echo "set MSub4=" & Right("0" & DatePart("m",TgtTime), 2)
Wscript.echo "set SSub4=" & Right("0" & DatePart("s",TgtTime), 2)

Wscript.Echo "set TgtHour= " & DatePart("h", TgtTime)

Accepted Solution

mattcarver earned 250 total points
ID: 17814487
I posted the working version above.  What you were doing wrong was trying to use TgtTime but TgtTime was never set "in VBS/WSH".  

The following line would set a variable in the context of a batch file but not for VBS/WSH.
Wscript.echo "set TgtTime=" & DateAdd("h", -4, now())

Author Comment

ID: 17814494

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
maxMirror challenge 10 89
wordcount challenge 11 76
Program to display an alert on Windows Toolbar 2 65
White board coding practice 3 61
RIA (Rich Internet Application) tools are interactive internet applications which have many of the characteristics of desktop applications. The RIA tools typically deliver output either by the way of a site-specific browser or via browser plug-in. T…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now