我在寫一個批處理腳本,我需要unix時間。在linux下很容易,但我不知道如何在Windows中執行此操作。什麼是命令「日期+%s」的窗口等效
回答
這是本地批處理解決方案,應該可以在任何地區使用。它使用WMIC以獨立於語言環境的方式獲取當前本地時間。其他一切都是字符串解析和基本數學的「簡單」問題。
: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
注意,該解決方案具有有限的壽命。當Unix時間超過32位有符號整數的最大值時,它將在2038-01-19停止工作。
EDIT - 該代碼已被編輯,以支持命令行而不是當前本地時間上的時間戳串的轉換。精確的時間範圍是1901-12-13 20:45:52.000000到2038-01-19 03:14:07.999999 GMT。 1970-01-01 00:00:00:00之前的時間將產生負值。
如果通過「unix time」您的意思是epoch second,那麼Windows不包含生成該工具的工具。相反,您可以安裝第三方工具。例如:
- 安裝Cygwin。
- 查找
date
二進制文件(在C:\Cygwin\
下或者您安裝它的任何地方) - 在Linux中使用它。
或者,每對這個答案的真棒評論,你可以安裝GNU Coreutils其中還包括date
命令。它包含了許多您可能不需要的其他工具,但Cygwin也是如此。
什麼? Downvotes沒有評論? – ghoti
無需安裝Cygwin即可獲取單個工具。大多數(所有?)GNU工具都可以下載和使用,無需Cygwin –
是的,這就是我所說的unix時間。 – whoabackoff
您可以在Windows中使用vbscript,解釋器可在您的系統上使用。
'--------------------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
- 1. 在tcl中,「if {-s $ file-name}」的等效命令是什麼?
- 2. Ping的等效命令是什麼
- 3. node.js中setInterval的基礎是什麼? (窗口的等效)
- 4. 什麼是「窗口」的Windows 8應用程序的等效物?
- 5. Mac上的Ubuntu的apt-get命令的等效物是什麼?
- 6. 爲什麼不是[\\ s *]等同於\\ s *?
- 7. 什麼是Carbon kUtilityWindowClass的等效可可窗口級別?
- 8. 'git add。'的SourceTree GUI中的等效命令是什麼?
- 9. 什麼是Selenium中的命令的java/javascript等效方法
- 10. pymongo中的collection.getIndexes()shell命令的等效參數是什麼?
- 11. Perforce的等效命令svn出口
- 12. 對於unix命令'ls -lah',等效的Windows命令提示符是什麼?
- 13. 對於LESS CSS預處理器,命令「Compass watch」的等效命令是什麼?
- 14. omnet ++中的「Srand」等效命令是什麼?
- 15. 該命令的等效bs-config.js(Browsersync)是什麼?
- 16. 從java轉換爲C++,setRequestProperty的等效curl命令是什麼
- 17. 什麼是Openshift REST API等效的流程模板命令
- 18. 與MS Word命令等效的Excel是什麼?
- 19. 什麼是Unix的等效命令其在VMS
- 20. 在c#中對mysql_fetch_assoc的等效命令是什麼?
- 21. Powershell中用於保留Url的netshell等效命令是什麼?
- 22. 與此Bash命令等效的PowerShell是什麼?
- 23. IBM AIX中objdump的等效命令是什麼
- 24. 在KornShell中定位命令的等效功能是什麼?
- 25. Oracle中「mysql_real_escape_string」的等效命令是什麼?
- 26. 等效命令
- 27. 命令窗口和立即窗口之間的實際區別是什麼?
- 28. 什麼是Netbeans中的Visual Studio命令窗口相當於
- 29. VS Debug Immediate窗口執行命令的線程是什麼?
- 30. 什麼是Vim命令退出所有打開的窗口?
也許[this](http://stackoverflow.com/questions/203090/how-to-get-current-datetime-on-windows-command-line-in-a-suitable-format-for-us)將有所幫助。 – ArtemStorozhuk