China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --

Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
DOS stands for freedom, openness and progress. Let us work hard, learn from the openness and GNU spirit of FreeDOS and Linux, and together build and grow a free GNU GPL world!

中国DOS联盟论坛
The time now is 2026-06-25 12:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [Share][Original] Post a time calculation one View 1,729 Replies 10
Original Poster Posted 2007-09-16 15:03 ·  中国 北京 中国科学院研究生院玉泉四公寓
银牌会员
★★★
Credits 1,187
Posts 555
Joined 2006-12-21 07:35
19-year member
UID 74129
Gender Male
Status Offline
There is basically no algorithm to speak of
Pure algebra
Also to make up for
The deficiencies of that post


@echo off
::将任何正实数N转换为YY-DD-HH-MM-SS-Ms
::N不大于214748364799。
::作者:Scriptor@GUCAS
::完成于:2007年9月16日13:07

setlocal enabledelayedexpansion
set/p in=::
set /a y=0,d=0,h=0,m=0,s=0,ms=0 rem 预定义时间。2>nul
set/a ms=in%%100 rem 计算毫秒部分 2>nul
if %in% gtr 100 set ms=%in:~-2%&set h=%in:~0,-2%
if %h% equ 0 goto :out rem 只有毫秒
call :clc !h!

:out
::: 输出时间
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 最大值是214748364799毫秒

Floor 2 Posted 2007-09-16 17:12 ·  中国 河南 郑州 电信
新手上路
Credits 4
Posts 2
Joined 2007-09-16 16:44
18-year member
UID 97540
Gender Male
Status Offline
Floor 3 Posted 2007-09-17 02:16 ·  中国 上海 静安区 电信
新手上路
Credits 9
Posts 5
Joined 2007-09-17 00:38
18-year member
UID 97572
Gender Male
Status Offline
Nice
Floor 4 Posted 2007-10-05 12:35 ·  中国 上海 长宁区 电信
中级用户
★★
Credits 400
Posts 211
Joined 2007-09-30 18:02
18-year member
UID 98650
Gender Male
Status Offline
Little brother is stupid, how to input a number in seconds, and the output only needs to be accurate to seconds. And the code is in a batch file.

[ Last edited by uiopuiop on 2007-10-5 at 12:52 PM ]
Floor 5 Posted 2007-10-05 12:57 ·  中国 上海 长宁区 电信
中级用户
★★
Credits 400
Posts 211
Joined 2007-09-30 18:02
18-year member
UID 98650
Gender Male
Status Offline
What does "call :clc !h! " mean?
Floor 6 Posted 2007-10-05 13:26 ·  中国 北京 海淀区 联通
银牌会员
★★★
Credits 1,287
Posts 634
Joined 2007-05-02 15:06
19-year member
UID 87277
Gender Male
From cmd.exe
Status Offline
Just look at call /? and setlocal /?
Floor 7 Posted 2007-10-05 16:31 ·  中国 广东 广州 白云区 电信
初级用户
★★
Credits 132
Posts 59
Joined 2007-08-23 21:24
18-year member
UID 95705
Gender Male
From GuangZhou
Status Offline
@echo off
setlocal enabledelayedexpansion
set /p Input=Enter seconds:
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 Equivalent to: %Y% years %D% days %H% hours %M% minutes %S% seconds.
pause>nul

Overflow will occur if the years exceed
Floor 8 Posted 2007-10-06 21:44 ·  美国 惠普公司
中级用户
★★
Credits 400
Posts 211
Joined 2007-09-30 18:02
18-year member
UID 98650
Gender Male
Status Offline
@echo off
setlocal enabledelayedexpansion
set /p Input=Enter seconds:
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 Equivalent to: %Y% weeks %D% days %H% hours %M% minutes %S% seconds.
pause>nul

[ Last edited by uiopuiop on 2007-10-6 at 11:29 PM ]
Floor 9 Posted 2007-12-31 20:15 ·  中国 山东 青岛 联通
初级用户
Credits 77
Posts 45
Joined 2007-08-03 17:25
18-year member
UID 94584
Gender Male
Status Offline
因为喜欢,所以无悔!
Floor 10 Posted 2007-12-31 21:20 ·  中国 北京 联通
银牌会员
★★★
Credits 1,287
Posts 634
Joined 2007-05-02 15:06
19-year member
UID 87277
Gender Male
From cmd.exe
Status Offline
:: 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
Floor 11 Posted 2008-03-03 21:44 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
Credits 2,278
Posts 1,020
Joined 2007-11-19 13:34
18-year member
UID 103127
Gender Male
Status Offline
Study together:
http://www.cn-dos.net/forum/viewthread.php?tid=37382&page=1###
--------------->15th floor
Forum Jump: