Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 301 Vote(s) - 3.37 Average
  • 1
  • 2
  • 3
  • 4
  • 5
what is the windows equivalent of the command "date+%s"

#1
I'm writing a batch script and I need the unix time. It's easy under linux, but I can't figure out how to do this in windows.
Reply

#2
If by "unix time" you mean the [epoch second](

[To see links please register here]

), then Windows doesn't include tools to produce that. Instead, you can install third-party tools. For example:

* Install [Cygwin](

[To see links please register here]

).
* Find the `date` binary (under <code>C:\Cygwin\</code> or wherever you installed it)
* Use it as you would in Linux.

Alternately, per the awesome comment on this answer, you could install [GNU Coreutils](

[To see links please register here]

) which also include a `date` command. It includes a number of other tools that you may not need, but then, so does Cygwin.
Reply

#3
You can use vbscript in windows, the interpreter is available on your system.

'--------------------epoch.vbs-----------------------
option explicit
dim s,o,z
for each o in GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem")
z=o.CurrentTimeZone
next
s=DateDiff("s", "01/01/1970 00:00:00", Now())-(60*z)
wscript.echo(s)
wscript.quit
Reply

#4
Here is a native batch solution that should work in any locale. It uses WMIC to get the current local time in a locale independent manner. Everything else is a "simple" matter of string parsing and basic math.

:UnixTime [ReturnVar] [TimeStamp]
::
:: Computes the Unix time from the current local time as reported by the
:: operating system. The Unix time is the number of seconds that have elapsed
:: since midnight Coordinated Universal Time (UTC), January 1, 1970, not
:: counting leap seconds.
::
:: The result is returned in variable ReturnVar,
:: or the result is echoed if ReturnVar is not specified
::
:: If the TimeStamp is provided in the 2nd parameter, then the Unix time for
:: the TimeStamp is computed, rather then for the current time.
::
:: The TimeStamp must have the same format as used by WMIC:
::
:: YYYYMMDDhhmmss.ffffffSzzz
::
:: where:
::
:: YYYY = gregorian year
:: MM = month
:: DD = day
:: hh = hour in 24 hour format
:: mm = minute
:: ss = seconds
:: ffffff = fractional seconds (microseconds)
:: S = timezone sign: + or -
:: zzz = timezone: minutes difference from GMT
::
:: Each component must be zero prefixed as needed to maintain the proper width.
::
:: The ReturnVar parameter must be provided in order to use the TimeStamp.
:: A ReturnVar of "" will function the same as no ReturnVar. This enables the
:: specification of a TimeStamp without an actual ReturnVar.
::
@echo off
setlocal
set "ts=%~2"
if not defined ts for /f "skip=1 delims=" %%A in ('wmic os get localdatetime') do if not defined ts set "ts=%%A"
set /a "yy=10000%ts:~0,4% %% 10000, mm=100%ts:~4,2% %% 100, dd=100%ts:~6,2% %% 100"
set /a "dd=dd-2472663+1461*(yy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yy+4900+(mm-14)/12)/100)/4"
set /a ss=(((1%ts:~8,2%*60)+1%ts:~10,2%)*60)+1%ts:~12,2%-366100-%ts:~21,1%((1%ts:~22,3%*60)-60000)
set /a ss+=dd*86400
endlocal & if "%~1" neq "" (set %~1=%ss%) else echo %ss%
exit /b

<br/>
*Note that this solution has a limited life span. It will cease to work on 2038-01-19 when the Unix time exceeds the maximum value of a signed 32 bit integer.*

***EDIT*** - The code has been edited to support conversion of a timestamp string on the command line instead of the current local time. The precise range of times supported is 1901-12-13 20:45:52.000000 through 2038-01-19 03:14:07.999999 GMT. Times prior to 1970-01-01 00:00:00.000000 will yield negative values.
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through