bat 时间 的运算与提取

比如在系统中date这个环境变量的值为
2011-07-23 星期六
年------%date:~0,4%      表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取4位字符,结果是2011
月------%date:~5,2%        表示指针从左向右偏移5位,然后从偏移处开始提取2位字符,结果是07
日------%date:~8,2%                         8                                  31%date:~5%          表示指针从左向右偏移5位,然后提取所有的值
时间-----%date:~-5%         表示指针反方向偏移,从最右端开始,偏移5位,然后从指针处提取左边的所有数值。
md F:\backup\%date:~0,4%%date:~5,2%%time:~0,2%%time:~3,2%
结果为:md F:\201107231855
echo.%date:~0%    日期date
echo.%time:~0%      时间time
echo. %date:~0,4%   年
echo.%date:~5,2%    月
echo.%date:~8,2%    日
echo.%time:~0,2%   小时
echo.%time:~3,2%    分
echo.%time:~6,2%    秒
echo.%time:~9,2%   里秒

pause

set /a 指定等号右边的字符串为被评估的数字表达式。

就是表示计算

@echo off
set/a xz=123+456
echo %xz%
pause>nul

可以输出123+456的结果

时间运算

@echo off
:: 判断一个脚本执行完毕所需要的时间
:: 先取开始时间,然后在即将结束的时候取结束时间
:: 两个时间都分别提取小时、分和秒数
:: 分别对小时数、分钟数和秒数进行操作
:: 还要对08和09这两个数进行操作
:: 注意:set /a num=的格式只能处理两位数中是否高位为0,如果是多位数
:: 要去高位的所有0的话,要用循环测试高位是否为0或者在高位添1然后
:: 再减去1000之类的数字的方法
:: code by JM 2006-9-5~10 [email protected] 感谢pengfei测试
set time_begin=%time:~0,-3%
echo 脚本开始运行时间是 %time_begin%
:: 小于10的小时数前有空格,要做去空格操作
for /f "tokens=1,2,3 delims=:" %%i in ("%time_begin%") do (
set /a hour_b=%%i
set /a munite_b=%%j
set /a second_b=%%k
)
pause
set time_end=%time:~0,-3%
for /f "tokens=1,2,3 delims=:" %%i in ("%time_end%") do (
set /a hour_e=%%i
set /a munite_e=%%j
set /a second_e=%%k
)
call :time_lapse
echo 脚本结束运行的时间是 %time_end%
echo 共花费了 %hour_% 小时 %munite_% 分 %second_% 秒
pause>nul
goto :eof
:time_lapse
:: 一定要按照 秒=>分钟=>小时 的顺序操作
if %second_e% lss %second_b% (
set /a munite_e=%munite_e%-1
set /a second_e=%second_e%+60
)
set /a second_=%second_e%-%second_b%
if %munite_e% lss %munite_b% (
set /a hour_e=%hour_e%-1
set /a munite_e=%munite_e%+60
)
set /a munite_=%munite_e%-%munite_b%
if %hour_e% lss %hour_b% (
set /a hour_e=%hour_e%+24
)
set /a hour_=%hour_e%-%hour_b%
goto :eof
另外一种方法(Code by Pengfei):
@echo off
::11:08:25.45
:: 运行程序的时间统计
set _time_start=%time%
set /a hour_start=%_time_start:~0,2%
set /a minute_start=1%_time_start:~3,2%-100
set /a second_start=1%_time_start:~6,2%-100
echo %time%
echo %hour_start%
echo %minute_start%
echo %second_start%
pause
:: 结束程序的时间统计
set _time_end=%time%
set /a hour_end=%_time_end:~0,2%
set /a minute_end=1%_time_end:~3,2%-100
set /a second_end=1%_time_end:~6,2%-100
echo %time%
echo %hour_end%
echo %minute_end%
echo %second_end%
pause
:: 计算秒数
if %second_end% lss %second_start% (
set /a second_end=%second_end%+60
set /a minute_end=%minute_end%-1
)
set /a second=%second_end%-%second_start%
:: 计算分钟数
if %minute_end% lss %minute_start% (
set /a minute_end=%minute_end%+60
set /a hour_end=%hour_end%-1
)
set /a minute=%minute_end%-%minute_start%
:: 计算小时数
if %hour_end% lss %hour_start% (
set /a hour_end=%hour_end%+24
)
set /a hour=%hour_end%-%hour_start%
echo %hour%:%minute%:%second%
pause 
时间: 2024-10-30 17:37:38

bat 时间 的运算与提取的相关文章

使用Calender类获取系统时间和时间和运算

使用Calender类获取系统时间和时间和运算: 1 @Test 2 public void testCal(){ 3 //使用Calender对象获取时间,并对时间进行计算: 4 Calendar instance = Calendar.getInstance(); 5 //获取系统的当前时间,并转换为字符串: 6 Date time = instance.getTime(); 7 SimpleDateFormat simpleDateFormat = new SimpleDateFormat

sql语句查询是有关时间的运算

SELECT WmsStock.sku_id,WmsStock.stock_num,WmsStock.product_date,WmsStock.expire_date,WmsStock.cost_price,GoodsSku.sku_name,GoodsSku.barcode, CONVERT(((UNIX_TIMESTAMP(WmsStock.expire_date)-UNIX_TIMESTAMP(WmsStock.product_date))/(60*60*24)),SIGNED) AS

日期时间的运算

一.日期时间计算 1)timedelta 两个datetime之差 次类中包含如下属性: 1 .days 天数 2. microseconds 微秒 (>=0并且<1秒) 3 .seconds: 秒数(>=0并且<1天)   演示: from datetime import datetime dt01 = datetime(2012, 12, 12, 12, 12, 12, 121212) dt02 = datetime(2013, 11, 13, 13, 13, 11, 1313

MYSQL的日期时间类运算操作

时间戳处理: 当前日期时间: NOW() 当前日期: CURDATE() 时间戳转日期格式 FROM_UNIXTIME(unix_timestamp,'%Y-%m-%d %H:%i:%s') 日期格式转时间戳 SELECT UNIX_TIMESTAMP() 相加: DATE_ADD(date,INTERVAL expr unit) DATE_ADD(now(),INTERVAL 1 day) 相减: DATE_SUB(date,INTERVAL expr unit) 例子: -- 今天SELEC

pandas 日期时间数据的分割提取操作

import pandas as pd import numpy as np import time s=time.time() data_2019=pd.read_excel('d:\\data\\abc.xlsx') data=data_2019[['卡号','交易时间']] data['日期'] =data_2019['交易时间'].dt.date data['时间'] =data_2019['交易时间'].dt.time data['年'] = data_2019['交易时间'].dt.

mysql日期时间函数2

win7可以设定每周从哪一天开始,win2003等不能方便的修改.有的是周日开始,有的是周一开始.而工作中有的时候每周是从周六开始算的,有些数据需要按周统计,那么那种方式比较好呢? 通过下面的研究,认为yearweek()是适合的,它返回的是 201311这样的格式.若要把周六当做新的一周的开始,那么就是: select yearweek(DATE_ADD(now(), INTERVAL 1 DAY)); mysql> select yearweek(DATE_ADD(now(), INTERV

java JDK8 学习笔记——第13章 时间与日期

第十三章 时间与日期 13.1 认识时间与日期 13.1.1 时间的度量 1.格林威治标准时间GMT 格林威治标准时间的正午是太阳抵达天空最高点之时.现在已经不作为标准时间使用. 2.世界时UT世界时是借由观测远方星体跨过子午线而得,在引入UTC之前,GMT和UT是相同的. 3.国际原子时TAI 将秒的国际单位定义为铯原子辐射振动91926331770周耗费的时间,从UT的1958年开始同步. 4.世界协调时UTC 采用了闰秒修正,确保UTC与UT相差不会超过0.9秒,加入闰秒的时间通常会在6月

前端PHP入门-020-重点日期函数之获取时期时间信息函数

你需要知道关于时间的几个概念: 时区/世界时/unix时间戳 1.时区 这个概念,之前大家听说过很多.我们来啰嗦两句,我们现实生活中使用的实区,在电脑里面也是一样有规定的. 1884年在华盛顿召开国际经度会议时,为了克服时间上的混乱,规定将全球划分为24个时区. 在中国采用首都北京所在地东八区的时间为全国统一使用时间. 2.世界时 不光是天文学家使用格林尼治时间(英文简写:GMT),就是在新闻报刊上也经常出现这个名词.我们知道各地都有各地的地方时间.如果对国际上某一重大事情,用地方时间来记录,就

Java学习(十一):Java中的常用时间操作

java中的时间操作不外乎这四种情况:获取当前时间,获取某个时间的某种格式,设置时间和时间的运算. 1.获取当前时间 有两种方式可以获得,第一种,使用java.util.Date类. Date date = new Date(); date.getTime(); 还有一种方式,使用System.currentTimeMillis(); 这两种方式获得的结果是一样的,都是得到一个当前的时间的long型的时间的毫秒值,这个值实际上是当前时间值与1970年一月一号零时零分零秒相差的毫秒数. 2.获取某