无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5620|回复: 13
打印 上一主题 下一主题

0-3-1 ~ 33301-3-1(不含) 之间的日期推算

[复制链接]
跳转到指定楼层
1#
发表于 2021-6-24 16:25:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是从网上看到的,0-3-1 ~ 33301-3-1(不含) 之间的日期推算,觉得不错,摘录于此,供把玩。
  1. :date2i <year> <month> <day> <RetVarName>
  2. setlocal&set/a y=%1,m=%2,d=%3
  3. set/a m=(m+9)%%12,y-=m/10,i=365*y+y/4-y/100+y/400+(m*153+2)/5+d-1
  4. endlocal&set %4=%i%&goto:eof
复制代码


评分

参与人数 1无忧币 +5 收起 理由
plusv + 5 很给力!

查看全部评分

2#
发表于 2021-6-24 17:00:07 来自手机 | 只看该作者
看不懂。

点评

可用于计算任意两个日期(0-3-1 ~ 33301-3-1(不含) 之间)的时间差。  详情 回复 发表于 2021-6-24 17:13
回复

使用道具 举报

3#
 楼主| 发表于 2021-6-24 17:13:00 | 只看该作者

可用于计算任意两个日期(0-3-1 ~ 33301-3-1(不含) 之间)的时间差。
回复

使用道具 举报

4#
发表于 2021-6-24 18:42:50 | 只看该作者
不错用.

算出的结果正确.

点评

代码也很简洁。  详情 回复 发表于 2021-6-24 20:06
回复

使用道具 举报

5#
 楼主| 发表于 2021-6-24 20:06:41 | 只看该作者
plusv 发表于 2021-6-24 18:42
不错用.

算出的结果正确.

代码也很简洁。
回复

使用道具 举报

6#
发表于 2021-6-24 20:52:47 | 只看该作者
你分享的这个不过是简单的数学计算,仔细研究研究,好多人都能写,只要数学不太差。

看看下面这个,昨天日期计算,不知道是哪位大神写的,数学学得真好,set运用的出神入化。

  1. @echo off
  2. set/a D=1%date:~8,2%%%100-1,M=1%date:~5,2%%%100-!D,Y=%date:~0,4%-!M,M+=!M*12,"K=!(M-4)|!(M-6)|!(M-9)|!(M-11)","D+=!D*(!(M-2)*(28+!(Y%%4))+K*30+(!!(M-2)&!K)*31)"
  3. set M=0%M%&set D=0%D%
  4. Echo;%Y%-%M:~-2%-%D:~-2%&pause
复制代码



用到的部分计算:

set /a !0                ::结果:1
set /a !1                ::结果:0
!意思是一元运算,简单的说,就是!非0值为0,!0值为1。
!(M-4),当M=4时,!(M-4)=1,否则等于0。

set /a "0|1"        ::结果:1
set /a "0|0"        ::结果:0
set /a "1|1"        ::结果:1
|意思是或运算,简单的说,就是同时为0时才为0,否则为1。
"K=!(M-4)|!(M-6)|!(M-9)|!(M-11)",由于4、6、9、11月都是30天,这个用于判断是不是其中某月,替代了IF判断。
假设当前6月:
"K=!(6-4)|!(6-6)|!(6-9)|!(6-11)"
"K=!(2)|!(0)|!(-3)|!(-5)"
"K=0|1|0|0"
"K=1"

set /a "0&1"        ::结果:0
set /a "0&0"        ::结果:0
set /a "1&1"        ::结果:1
&意思是与运算,简单的说,就是同时为1时才为1,否则为0。
"(!!(M-2)&!K)*31"
仍然以6月为例:
"(!!(6-2)&!1)*31"
"(!!4&0)*31"
"(!0&0)*31"
"(1&0)*31"
"0*31"
结果:0


感兴趣的可以自己研究计算方法,不过我估计过一段时间你就会忘记的,即使你研究的滚瓜烂熟。

点评

计算方法确实别具一格,但 “set/a D=1%date:~8,2%%%100-1,M=1%date:~5,2%%%100-!D,Y=%date:~0,4%-!M” 这样截取日期也容易出错。  详情 回复 发表于 2021-6-28 12:56
回复

使用道具 举报

7#
发表于 2021-6-25 08:33:46 | 只看该作者
能算出彩票中奖号码吗

点评

睡吧,看看能不能做个好梦!  详情 回复 发表于 2021-7-25 10:26
那 躺平族 就开心了.  详情 回复 发表于 2021-6-25 13:07
回复

使用道具 举报

8#
发表于 2021-6-25 13:07:12 | 只看该作者
dbjdyy 发表于 2021-6-25 08:33
能算出彩票中奖号码吗

那 躺平族 就开心了.
回复

使用道具 举报

9#
 楼主| 发表于 2021-6-28 12:56:11 | 只看该作者
nttwqz 发表于 2021-6-24 20:52
你分享的这个不过是简单的数学计算,仔细研究研究,好多人都能写,只要数学不太差。

看看下面这个,昨天 ...

计算方法确实别具一格,但
“set/a D=1%date:~8,2%%%100-1,M=1%date:~5,2%%%100-!D,Y=%date:~0,4%-!M”
这样截取日期也容易出错。
回复

使用道具 举报

10#
发表于 2021-7-24 19:18:17 | 只看该作者
青青草 发表于 2021-6-28 12:56
计算方法确实别具一格,但
“set/a D=1%date:~8,2%%%100-1,M=1%date:~5,2%%%100-!D,Y=%date:~0,4%-!M”
...

确实
回复

使用道具 举报

11#
 楼主| 发表于 2021-7-25 10:26:35 | 只看该作者
dbjdyy 发表于 2021-6-25 08:33
能算出彩票中奖号码吗

睡吧,看看能不能做个好梦!
回复

使用道具 举报

12#
 楼主| 发表于 2021-7-25 10:27:12 | 只看该作者
回复

使用道具 举报

13#
发表于 2021-8-25 12:46:39 | 只看该作者
赞&#128077;
回复

使用道具 举报

14#
 楼主| 发表于 2021-8-27 11:05:00 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-17 17:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表