无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 4103|回复: 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 很给力!

查看全部评分

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

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

话说,睡的挺晚啊……

点评

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

使用道具 举报

3#
 楼主| 发表于 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
回复

使用道具 举报

4#
 楼主| 发表于 2023-9-11 18:57:16 | 显示全部楼层
pda8888 发表于 2023-9-11 14:03
在windows 11 22h2 2134 命令行下,报错:

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

使用道具 举报

5#
 楼主| 发表于 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的马甲吗?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-13 17:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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