BAT批处理脚本案例--时间戳计算返回距1970-1-1 零点的秒数

本文介绍了一个用于计算时间戳的Windows BAT批处理脚本,详细解析了如何手动计算从1970-1-1到当前时间的秒数,包括处理时区差异的方法。脚本提供了日期和时间的灵活输入选项,适用于需要在Windows环境中处理时间戳的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类似Java、Js等编程语言都有时间戳函数,可返回距离1970-1-1 00:00:00的秒数或豪秒数,调用起来比较方便。windos bat脚本没有时间戳函数,只能通过日期、时间进行手工计算,实现起来比较复杂,具体如下:

1、涉及知识点
1)时间戳计算公式
2)bat脚本函数、函数返回值实现方式
3)if 字符串、数字判断
4)字符串操作:去引号,字符串截取

windows bat批处理脚本 字符串截取、拼接、查找等使用说明

2、脚本源码

vtimestramp.bat

@echo off & setlocal
set vdate=%~1
set vtime=%~2
if not defined vdate (set vdate=%date%)
if not defined vtime (set vtime=%time%)
call :calcSeconds %vdate:~0,10% %vtime% secs
echo %secs%
goto :eof

:calcSeconds
set vdate=%~1
set vtime=%~2
set yy=%vdate:~0,4% & set mm=%vdate:~5,2% & set dd=%vdate:~8,2%
rem 02=>2
set /a dd=100%dd%%%100, mm=100%mm%%%100
rem 1970年01月01日 天数计算
set /a mm-=2
if %mm% LEQ 0 (
    set /a mm+=12
    set /a yy-=1
)
set /a days=%yy%/4 - %yy%/100 + %yy%/400 + 367*%mm%/12 + %dd% + %yy%*365 - 719499

rem 9:10:12=>09:10:12
if "%vtime:~1,1%" == ":" (set "vtime=0%vtime%")
set hh=%vtime:~0,2% & set nn=%vtime:~3,2% & set ss=%vtime:~6,2%

rem 09=>9
set /a hh=100%hh%%%100, nn=100%nn%%%100, ss=100%ss%%%100

rem 1970年01月01日 00:00:00, 秒数计算,8个小时时差
set /a secs=days*86400 + hh*3600 + nn*60 + ss - 8 * 60 * 60
set "%3=%secs%"
goto :EOF
1)脚本调用案例

没有参数默认当前日期、当前时间

D:\cmdtest\lianxi>vtimestamp.bat
1581993427

指定日期、时间

D:\cmdtest\lianxi>vtimestamp.bat 2020-03-18 10:10:10
1584497410
2)函数返回值说明

bat脚本函数返回值有2种实现方式:
1)全局变量,最简单,变量赋值、读取即可;
2)类似参数引用,高级语言常见的一种函数结果返回方式:修改函数参数,bat脚本实现参数返回注意事项:

调用时指定参数名:
call :calcSeconds %vdate:~0,10% %vtime% secs


函数中修改该参数值:
set “%3=%secs%”


调用结束,读取参数%secs%
echo %secs%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值