中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [分享][原创]发一个计算时间的
作者:
标题: [分享][原创]发一个计算时间的 取消高亮 | 上一主题 | 下一主题
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『楼 主』:  [分享][原创]发一个计算时间的

基本没有什么算法可言
纯粹代数
也是弥补
http://www.cn-dos.net/forum/viewthread.php?tid=33561&fpage=3
那个帖子的不足


@echo off
::Convert any possitive real number N to YY-DD-HH-MM-SS-Ms
::N is not larger than 214748364799.
::Author:   Scriptor@GUCAS
::Finished at: 13:07  09-16-2007

setlocal enabledelayedexpansion
set/p in=::
set /a y=0,d=0,h=0,m=0,s=0,ms=0 rem predefine the time. 2>nul
set/a ms=in%%100  rem cacl the ms_part 2>nul
if %in% gtr 100 set ms=%in:~-2%&set h=%in:~0,-2%
if %h% equ 0 goto :out rem only millisecond
call :clc !h!

:out
::: output the time
echo time %in% (ms) equals:
echo      %y% Years %d% Days %h% Hours %m% Mins %s% Secs %ms% ms.
endlocal
pause&exit/b

:clc
if %1 gtr 0 (
   set/a h=%1/3600
   set/a m=%1%%3600/60
   set/a s=%1%%3600%%60
)
if %h% geq 24 (
   set/a y=%h%/24/365
   set/a d=%h%/24%%365
   set/a h%%=24
)

rem max is 214748364799 ms


2007-9-16 15:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lookjcq
新手上路





积分 4
发帖 2
注册 2007-9-16
状态 离线
『第 2 楼』:  

?

2007-9-16 17:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
danlanse8025
新手上路





积分 9
发帖 5
注册 2007-9-17
状态 离线
『第 3 楼』:  

很不错.

2007-9-17 02:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uiopuiop
中级用户





积分 400
发帖 211
注册 2007-9-30
状态 离线
『第 4 楼』:  

小弟愚笨,如何输入以秒为单位的数字,输出只要精确到秒就可以了。并且代码在一个批处理里。

[ Last edited by uiopuiop on 2007-10-5 at 12:52 PM ]

2007-10-5 12:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
uiopuiop
中级用户





积分 400
发帖 211
注册 2007-9-30
状态 离线
『第 5 楼』:  

call :clc !h! 什么意思?

2007-10-5 12:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 6 楼』:  

自己看call /?
和setlocal /?

2007-10-5 13:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Nickey
初级用户




积分 132
发帖 59
注册 2007-8-23
来自 GuangZhou
状态 离线
『第 7 楼』:  

@echo off
setlocal enabledelayedexpansion
set /p Input=输入秒:
if %Input% GTR 0  set /a Y=%Input%/31536000&set /a D=(Input%%31536000)/86400&set /a H=(Input%%86400)/3600&set /a M=(Input%%3600)/60&set /a S=Input%%60
echo 折合:  %Y% 年 %D% 日 %H% 时 %M% 分 %S% 秒.
pause>nul

超过年份将会溢出

2007-10-5 16:31
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (375600651)  编辑帖子  回复  引用回复
uiopuiop
中级用户





积分 400
发帖 211
注册 2007-9-30
状态 离线
『第 8 楼』:  多谢!

@echo off
setlocal enabledelayedexpansion
set /p Input=输入秒:
if %Input% GTR 0  set /a Y=%Input%/604800&set /a D=(Input%%604800)/86400&set /a H=(Input%%86400)/3600&set /a M=

(Input%%3600)/60&set /a S=Input%%60
echo 折合:  %Y% 周 %D% 日 %H% 时 %M% 分 %S% 秒.
pause>nul

[ Last edited by uiopuiop on 2007-10-6 at 11:29 PM ]

2007-10-6 21:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gne
初级用户




积分 77
发帖 45
注册 2007-8-3
状态 离线
『第 9 楼』:  

不好使啊



因为喜欢,所以无悔!
2007-12-31 20:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 10 楼』:  

:: Func: Returns a calendar date and time of day from the number of
::       elapsed seconds since 1st January 1970 00:00:00. For
::       NT4/2000/XP/2003.
::
:: Args: %1 seconds used to create calendar date and time of day
::       %2 var to receive year, 4 digits for all typical dates
::       %3 var to receive month, 2 digits, 01 to 12
::       %4 var to receive day of month, 2 digits, 01 to 31
::       %5 var to receive hours, 2 digits, 00 to 23
::       %6 var to receive minutes, 2 digits, 00 to 59
::       %7 var to receive seconds, 2 digits, 00 to 59
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
set /a i=%1,ss=i%%60,i/=60,nn=i%%60,i/=60,hh=i%%24,dd=i/24,i/=24
set /a a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
(if %hh% LSS 10 set hh=0%hh%)&(if %nn% LSS 10 set nn=0%nn%)
if %ss% LSS 10 set ss=0%ss%
endlocal&set %7=%ss%&set %6=%nn%&set %5=%hh%&^
set %4=%dd%&set %3=%mm%&set %2=%yy%&goto :EOF

2007-12-31 21:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 11 楼』:  

一起学习:
http://www.cn-dos.net/forum/view ... 37382&page=1###
--------------->15楼

2008-3-3 21:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: