阅读:4897回复:28

日期直通车,可输出前天、昨天、明天、后天

楼主#
更多 发布于:2024-08-21 09:58
小小的date只能输出当前日期,如果需要输出前天、后天类似这样的非当前日期就必须借助小小直通车的管道功能了,幸有十年兄分享的datex,使得这种需求得以实现。


添加流程:
1.拷贝datex.exe到小小主文件夹的tools文件夹中。(建立这个文件夹是为了方便存放小小调用的各种小程序)
2.在码表中添加直通车脚本,行末的$SPACE可以删除,避免直通车调用与其他正常输出冲突,根据需要自行修改吧。
oqt $[前天]$GO(|cmd.exe$_/c$_.\tools\datex.exe$_-f$_yyyy年m月d日$_-o$_-2)$SPACE
ozt $[昨天]$GO(|cmd.exe$_/c$_.\tools\datex.exe$_-f$_yyyy年m月d日$_-o$_-1)$SPACE
omt $[明天]$GO(|cmd.exe$_/c$_.\tools\datex.exe$_-f$_yyyy年m月d日$_-o$_1)$SPACE
oht $[后天]$GO(|cmd.exe$_/c$_.\tools\datex.exe$_-f$_yyyy年m月d日$_-o$_2)$SPACE


3.datex的日期格式可以自行定制,有特殊需要的可自行摸索或者留言交流。
Datex是CMD里面的date和time命令的增强版,它能显示系统日期和时间,但不能设置系统日期和时间。DateX在命令行下的帮助说明如下:
DateX 2.7 - (C) 2004-2010 by Bill Stewart (bstewart@iname.com)Usage: datex [-d date] [-f format] [-i num] [-o offset] [-t]
-d  Specifies a date.-f  Specifies the format for the date.
-i  Output the date represented by the specified number (inverse of -t).-o  Specify a number-of-days difference.
-t  Output the date as a number for comparison purposes.Without arguments, DateX prints the current date and time.
——————————————————————————————————————————-
-d 指定日期。
-f 指定输出的日期格式,比如: datex -f  yyyy年mm月dd日" ,就可以返回类似 2024年08月07日的格式了。这个格式可以灵活的变换。-i 根据指定的整数,返回一个日期类型的值
-o 返回当前日期之前或者之后数天的日期。比如今天是2024-8-21,那么执行 datex -o 2 就得到2024-8-23,-o 后面也可以指定负数,这里就不多说了。-t 参数根据指定的日期返回一个数,与 -i 相反
/? 输出帮助信息以上参数可以组合使用,如果没有参数则直接返回当前日期与时间
本部分内容设定了隐藏,需要回复后才能看到
amouer
新手上路
新手上路
沙发#
发布于:2025-04-03 12:40
学习一下,谢谢分享
板凳#
发布于:2024-09-21 17:49
yanqian:Windows平台也可以试试用系统自带的 powershell 命令:get-date
默认如果要只输出日期,不带具体时间,就是 get-date  -DisplayHint date
前一天就是:(get-date).adddays(...
回到原帖
感谢分享,这个vbs脚本很好用。
地板#
发布于:2024-09-20 15:00
yanqian:周大刚才发的可以保存为 get-date.js,保存脚本文件时编码选择用 “Unicode”(如果是windows下的记事本)或“UTF16 LE”(如果是用的其它支持多种编码的编辑器)。
然后可以在CMD下测试:
#当天的日期
cs...
回到原帖
刚刚测试了,你提供的脚本没有问题。
zjason
新手上路
新手上路
4楼#
发布于:2024-09-17 23:21
感谢分享!
5楼#
发布于:2024-09-07 17:01
我也下载datex.exe来试试
感谢分享
6楼#
发布于:2024-08-31 22:36
周大刚才发的可以保存为 get-date.js,保存脚本文件时编码选择用 “Unicode”(如果是windows下的记事本)或“UTF16 LE”(如果是用的其它支持多种编码的编辑器)。
然后可以在CMD下测试:
#当天的日期
cscript get-date.js
#一天后的日期
cscript get-date.js 1
#两天后的日期
cscript get-date.js 2

如果是要用命令直通车,就是参考楼主的做法这样写:
oqt $[前天]$GO(|cscript$_//nologo$_$(_HOME)\get-date.js$_-2)
ozt $[昨天]$GO(|cscript$_//nologo$_$(_HOME)\get-date.js$_-1)
omt $[明天]$GO(|cscript$_//nologo$_$(_HOME)\get-date.js$_1)
oht $[后天]$GO(|cscript$_//nologo$_$(_HOME)\get-date.js$_2)

理论上在中文的系统上小小安装为内置的情况下应该就可以正常输出,但在别的语言环境下,可能会有乱码。
get-date.zip
7楼#
发布于:2024-08-31 15:25
使用cscript.exe运行的版本

var d=new Date();
var days=0;
if(WScript.Arguments.Length==1)
days=parseInt(WScript.Arguments(0));
d.setTime(d.getTime()+days*24*3600*1000);
var text=d.getFullYear()+'年'
+(d.getMonth()+1)+'月'
+d.getDate()+'日';
WScript.Echo(text);
gyzczy
新手上路
新手上路
8楼#
发布于:2024-08-29 09:18
感谢分享!!!
9楼#
发布于:2024-08-24 12:10
Windows平台也可以试试用系统自带的 powershell 命令:get-date
默认如果要只输出日期,不带具体时间,就是 get-date  -DisplayHint date
前一天就是:(get-date).adddays(-1)
两天后就是:(get-date).adddays(2)

不过这个输出就是带时间的,如果只要日期部分可以这样,比如三天后:
(Get-Date).AddDays(3).ToString('yyyy-MM-dd')



增加vbs版本,将下面内容保存为 get-date.vbs,编码 UTF-16 LE,或者用旧版的Windows记事本就保存在 Unicode 格式:
Dim dt
Set objArgs = WScript.Arguments
If objArgs.Count < 1 Then
  dt=now
Else
  IntDay = objArgs(0)
  dt=dateadd("d", IntDay, now)
End If
Wscript.Echo year(dt) & "年" & month(dt) & "月" & day(dt) & "日"
#当天的日期
cscript /nologo get-date.vbs
#一天后的日期
cscript /nologo get-date.vbs 1
#两天前的日期
cscript /nologo get-date.vbs -2
上一页
游客

返回顶部