无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 4092|回复: 35
打印 上一主题 下一主题

[分享] 【批处理】一行代码的昨天日期计算

  [复制链接]
跳转到指定楼层
1#
发表于 2023-9-6 22:26:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
主要算法就一行,代码来自网络,年代久远,作者未知,非本人编写!

  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
复制代码


昨天日期计算.7z (305 Bytes, 下载次数: 47)

评分

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

查看全部评分

36#
发表于 2023-10-4 17:42:07 | 只看该作者
学习学习
回复

使用道具 举报

35#
发表于 2023-10-4 07:12:00 | 只看该作者

进来学习
回复

使用道具 举报

34#
发表于 2023-10-4 07:00:02 来自手机 | 只看该作者
谢谢分享!
回复

使用道具 举报

33#
发表于 2023-10-2 11:10:00 | 只看该作者
nttwqz 发表于 2023-10-2 10:33
你是batche的马甲吗?

不是同一个人。我是2009年注册的。
回复

使用道具 举报

32#
 楼主| 发表于 2023-10-2 10:33:03 来自手机 | 只看该作者
本帖最后由 nttwqz 于 2023-10-2 10:59 编辑
Batcher  2023-10-2 10:24

2011-01-24  bbs.bathome.net/thread-10879-1-1.html#pid69290
2011-01-09 ...


你是batche的马甲吗?
回复

使用道具 举报

31#
发表于 2023-10-2 10:24:55 | 只看该作者
我能找到的较早的出处和讲解:
2011-01-24  bbs.bathome.net/thread-10879-1-1.html#pid69290
2011-01-09  bbs.bathome.net/thread-10704-1-1.html#pid68324

点评

batche  详情 回复 发表于 2023-10-2 10:33
回复

使用道具 举报

30#
发表于 2023-9-22 14:49:57 | 只看该作者
看着好难
回复

使用道具 举报

29#
发表于 2023-9-20 17:20:30 | 只看该作者
然而有啥用处呢
回复

使用道具 举报

28#
发表于 2023-9-19 15:00:37 | 只看该作者
pda8888 发表于 2023-9-11 14:03
在windows 11 22h2 2134 命令行下,报错:

不要开启变量延迟
回复

使用道具 举报

27#
发表于 2023-9-16 19:21:17 | 只看该作者
有什么用?
回复

使用道具 举报

26#
 楼主| 发表于 2023-9-11 18:57:16 | 只看该作者
pda8888 发表于 2023-9-11 14:03
在windows 11 22h2 2134 命令行下,报错:

仅适用于默认日期格式
回复

使用道具 举报

25#
发表于 2023-9-11 14:03:25 | 只看该作者
在windows 11 22h2 2134 命令行下,报错:
  1. 运算符不存在。
  2. -01-00
  3. 请按任意键继续. . .
复制代码
回复

使用道具 举报

24#
发表于 2023-9-9 17:53:29 | 只看该作者
bg888 发表于 2023-9-9 14:34
为什么不用 echo %date% 呢,出来今天的日期,不就知道昨天的日期了

知道昨天日期是一回事,用电脑自动处理又是另一回事了。
回复

使用道具 举报

23#
发表于 2023-9-9 14:34:13 | 只看该作者
为什么不用 echo %date% 呢,出来今天的日期,不就知道昨天的日期了
回复

使用道具 举报

22#
发表于 2023-9-9 14:02:12 来自手机 | 只看该作者
感谢分享
回复

使用道具 举报

21#
发表于 2023-9-8 21:24:30 | 只看该作者
感谢分享
回复

使用道具 举报

20#
发表于 2023-9-8 13:34:53 | 只看该作者
思路真的是极为巧妙,跪拜了!也多谢batche的解读,要不真的要研究很久才弄得懂。
回复

使用道具 举报

19#
发表于 2023-9-8 00:56:45 | 只看该作者
nttwqz 发表于 2023-9-7 11:12
作者灵活运用了一元运算,省去了一堆条件判断。

话说,睡的挺晚啊……

是很巧妙,我本以为会很复杂,但作者利用日期从1开始的特殊性,适用于计算昨天日期,利用取非就分开了跨年跨月,然后就只要判断月份就知道日期了。不过日期加减很多天还是很复杂,我尝试了一下还是弄不出来。
回复

使用道具 举报

18#
发表于 2023-9-8 00:28:06 | 只看该作者
batche 发表于 2023-9-7 00:53
感谢分享,好算法,把润平年、大小月、跨年跨月都考虑进去了。
我尝试理解一下:
%date%是形如"yyyy(分隔 ...

感谢解析。
回复

使用道具 举报

17#
发表于 2023-9-7 15:31:06 | 只看该作者

你这个核心应该是datediff啊,没有啊。
回复

使用道具 举报

16#
发表于 2023-9-7 13:06:27 | 只看该作者
谢谢分享
回复

使用道具 举报

15#
发表于 2023-9-7 11:37:19 | 只看该作者
学习一下,谢谢
回复

使用道具 举报

14#
发表于 2023-9-7 11:31:10 | 只看该作者
谢谢分享!
回复

使用道具 举报

13#
 楼主| 发表于 2023-9-7 11:25:14 来自手机 | 只看该作者
megatron 发表于 2023-9-7 04:19
对于编程是一窍不通

这个其实和编程没什么关系,主要还是要数学好,就是灵活运用了一元运算符的数学公式。

!0=1
!1=0

0|0=0
0|1=1
1|1=1

0&0=0
0&1=0
1&1=1
回复

使用道具 举报

12#
 楼主| 发表于 2023-9-7 11:12:42 来自手机 | 只看该作者
batche 发表于 2023-9-7 00:53
感谢分享,好算法,把润平年、大小月、跨年跨月都考虑进去了。
我尝试理解一下:
%date%是形如"yyyy(分隔 ...

作者灵活运用了一元运算,省去了一堆条件判断。

话说,睡的挺晚啊……
回复

使用道具 举报

11#
发表于 2023-9-7 10:31:25 | 只看该作者
学习学习,谢谢分享。
回复

使用道具 举报

10#
发表于 2023-9-7 09:53:27 | 只看该作者
谢谢分享!
回复

使用道具 举报

9#
发表于 2023-9-7 09:17:28 | 只看该作者
向好学的坛友致敬
回复

使用道具 举报

8#
发表于 2023-9-7 07:38:32 | 只看该作者
进来学习
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-13 00:06

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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