中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已放弃请勿进]关于对任意时间的回溯
« [1] [2] [3] »
作者:
标题: [已放弃请勿进]关于对任意时间的回溯 上一主题 | 下一主题
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 16 楼』:  



  Quote:
Originally posted by moniuming at 2008-6-1 23:19:

我觉得楼主的意思是:20年+2个月+600天+4000个小时+10000分钟

但感觉没什么意义,甚至.............唉

这不是没意义,我写这个批处理动机就是为了让大家能方便的回溯时间。



批处理之家新域名:www.bathome.net
2008-6-1 23:22
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 17 楼』:  

20年2个月600天4000个小时10000分钟
这么说吧
当前时间先减去10000分钟、再减去4000个小时、再减去600天,
假设此时结果为 2005年3月20日19点20分  那么此时再减去2个月,该如何减?
结果是 2005年1月20日19点20分 吗?



致精致简!
2008-6-1 23:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 18 楼』:  

如果仅仅这样估计还好处理
下面是算天数的 加上处理小时和分应该没问题吧
@echo off
SET/p TT=你想知道多少天前的日期?
for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do set /a p1=%%i,p2=100%%j%%100,p3=100%%k%%100
if %p3% gtr %TT% goto ppp
:nxt
set/a p2-=1
if %p2% equ 0 set/a p1-=1&&set p2=12
set/a PN2="!(p1%%4) & !(!(p1%%100)) | !(p1%%400)",PN2=28+PN2
for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i
if %p3% leq %tt% goto nxt
:ppp
set/a p3=%p3%-%tt%
setlocal enabledelayedexpansion
for %%i in (p2 p3) do if !%%i! lss 10 set %%i=0!%%i!
echo %p1%年%p2%月%p3%日
pause&goto :eof




简单!简单!再简单!
2008-6-1 23:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 19 楼』:  



  Quote:
Originally posted by 26933062 at 2008-6-1 23:23:
20年2个月600天4000个小时10000分钟
这么说吧
当前时间先减去10000分钟、再减去4000个小时、再减去600天,
假设此时结果为 2005年3月20日19点20分  那么此 ...

兄弟思路出偏差了,最后根本不会存在整减两个月,而应是将前面的先转换运算,然后从分一路递减到年

[ Last edited by zw19750516 on 2008-6-1 at 11:30 PM ]



批处理之家新域名:www.bathome.net
2008-6-1 23:28
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 20 楼』:  



  Quote:
Originally posted by terse at 2008-6-1 23:26:
如果仅仅这样估计还好处理
下面是算天数的 加上处理小时和分应该没问题吧
[code]
@echo off
SET/p TT=你想知道多少天前的日期?
for /f "tokens=1-3 delim ...

老兄应该还记得我以前发的几个关于日期计算的贴子吧,请相信我对这样的算法还是没问题的,我现在要解决的是换算任意时间的问题。



批处理之家新域名:www.bathome.net
2008-6-1 23:36
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 21 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-6-1 23:36:

老兄应该还记得我以前发的几个关于日期计算的贴子吧,请相信我对这样的算法还是没问题的,我现在要解决的是换算任意时间的问题。

怎么个换算任意时间 恕小弟愚笨 望兄来解说一下



简单!简单!再简单!
2008-6-1 23:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by terse at 2008-6-1 23:45:

怎么个换算任意时间 恕小弟愚笨 望兄来解说一下

晕,前面都讨论了这么久了,兄弟还没明白我的意思啊,也只怪我没说明白。
如在时间回溯批处理提示输入处输入:20 38 67 900 30000,从当前时间向前
回溯20年+38个月+67天+900个小时+30000分钟是?年?月?日?时?分。
首选要将分换算成整时a+余数,再将时+a后换算成整月b+余数(在这果就卡壳
了),再将月+b后换算成整年c+余数,再将年+c,然后更想不清楚了。。。

[ Last edited by zw19750516 on 2008-6-1 at 11:59 PM ]



批处理之家新域名:www.bathome.net
2008-6-1 23:53
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 23 楼』:  

确实理解不了题意了。
20年或2个月,始终都必须有个具体天数才对啊?那么就必然存在我17楼说的现象。



致精致简!
2008-6-1 23:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 24 楼』:  



  Quote:
Originally posted by 26933062 at 2008-6-1 23:55:
确实理解不了题意了。
20年或2个月,始终都必须有个具体天数才对啊?那么就必然存在我17楼说的现象。

天数是肯定有的,在时间坐标上从当前时间向前回溯20年+39个月+470天+6000
个小时+10001分钟这个时间点肯定是存在的,问题是我们怎么去找到这个时间
点,这里面就将涉及到一系列的判断和转换运算了。
ps:兄弟不会也觉得我是个外星人吧,呵呵。

[ Last edited by zw19750516 on 2008-6-2 at 12:05 AM ]



批处理之家新域名:www.bathome.net
2008-6-2 00:03
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 25 楼』:  

这样看来 次序应该也有说法  因为有闰 是不是呢?



简单!简单!再简单!
2008-6-2 00:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 26 楼』:  



  Quote:
Originally posted by terse at 2008-6-2 00:17:
这样看来 次序应该也有说法  因为有闰 是不是呢?

说了次序是分-时-天-月-年,就是因为闰的问题还有每月天数不同的问题才会这么
难!!!



批处理之家新域名:www.bathome.net
2008-6-2 00:21
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 27 楼』:  

假设当前时间是 2008年4月2日20点10分
问: 2个月前1天1小时1分钟 是什么时间,你用手工计算告诉我答案吧、
然后说说你的计算过程。



致精致简!
2008-6-2 00:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 28 楼』:  

9分19点1日2月2008年,这个好算,下面这个就不好算了:
2008年4月20日20点10分的前2个月48天29个小时78分钟

[ Last edited by zw19750516 on 2008-6-2 at 12:31 AM ]



批处理之家新域名:www.bathome.net
2008-6-2 00:30
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 29 楼』:  

算了,可能真的是我太想复杂了(事实上根本不存在如20年前39个月500天6000个小时10000分钟之说),明天还要上班,先睡觉了,谢谢兄弟们了。



批处理之家新域名:www.bathome.net
2008-6-2 00:37
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 30 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-6-2 00:30:
9分19点1日2月2008年,这个好算,下面这个就不好算了:


[ Last edited by zw19750516 on 2008-6-2 at 12:31 AM ]

你这个难道不是减去整2个月吗?
先减去分,时、天、结果为:2008年4月1日19点9分
再减去2整月、即:4减2  得到 2008年2月1日19点9分



致精致简!
2008-6-2 00:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: