我正在创建一个批处理文件,将%date%转换为julian日期,但我似乎找不到有关这方面的明确信息。任何人都可以告诉我如何将%date%转换为julian日期?或者那些已存在的批处理文件?
谢谢
答案 0 :(得分:2)
编辑:原始代码经过修改,只显示当前日期的Julian Day编号"道琼斯MM / DD / YYYY"格式:
@echo off
for /F "tokens=2-4 delims=/ " %%a in ("%date%") do (
set /A "a=(%%a-14)/12, JDN=(1461*(%%c+4800+a))/4+(367*(%%a-2-12*a))/12-(3*((%%c+4900+a)/100))/4+%%b-32075"
)
echo %JDN%
参考:http://www.hermetic.ch/cal_stud/jdn.htm#comp
<强>第二。修改
要获取序数日期,请根据一年中的天数(从1到366),使用此方法:
@echo off
setlocal
for /F "tokens=2-4 delims=/ " %%a in ("%date%") do (
set /A "MM=1%%a-100, DD=1%%b-100, Ymod4=%%c%%4"
)
for /F "tokens=%MM%" %%m in ("0 31 59 90 120 151 181 212 243 273 304 334") do set /A Day=DD+%%m
if %Ymod4% equ 0 if %MM% gtr 2 set /A Day+=1
echo %Day%
答案 1 :(得分:1)
this这里有julian.bat:
@if (@X)==(@Y) @end /* JScript comment
@echo off
cscript //E:JScript //nologo "%~f0"
exit /b %errorlevel%
@if (@X)==(@Y) @end JScript comment */
Date.prototype.getJulian = function() {
return Math.floor((this / 86400000) - (this.getTimezoneOffset()/1440) + 2440587.5);
}
var today = new Date(); //set any date
var julian = today.getJulian(); //get Julian counterpart
WScript.Echo(julian);
它可以像:
一样使用for /f %%a in ('call julian.bat') do @set "julian=%%a"