尝试使用变量 julian 日期和年份的最后一位重命名文件

Trying to rename a file using variable julian date and last digit of year

我正在尝试像这样重命名文件:

idYDDD.apl

在哪里: id 是一个字符串 id,它是不变的,不用担心。 Y 是当前年份的最后一位 DDD 是儒略日期,而不是儒略格式的真正儒略日期。 (1 月 1 日 + 天)

我在这里找到了一个批处理文件,它可以帮助我进行 Julian 日期转换。但我正试图从年份中提取个位数。

这就是我试图获取个位数的方式:

set digit=%DATE:~12,1%

我一直收到错误

"Invalid number. Numerical constants either decimal, hexadecimal or octal."

我有几个文件,DATETOJULIAN.bat 和 SendAPL.BAT

Date to julian 正在转换日期,SendAPL.Bat 正在重命名并在复制后通过 FTP 发送文件。以下是 Julian 转换:

REM CONVERT DATE TO JULIAN DAY NUMBER

Echo %Date%

REM GET MONTH, DAY, YEAR VALUES
FOR /F "TOKENS=1-3 DELIMS=/" %%A IN ("%1") DO SET MM=%%A& SET DD=%%B& SET YY=%%C

REM ELIMINATE LEFT ZEROS
SET /A DD=10%DD% %% 100, MM=10%MM% %% 100

REM CALCULATE JULIAN DAY NUMBER
IF %MM% LSS 3 SET /A MM+=12, YY-=1
SET /A A=YY/100, B=A/4, C=2-A+B, E=36525*(YY+4716)/100, F=306*(MM+1)/10,         JDN=C+DD+E+F-1524

下面是发送 APL:

@echo off

set digit=%DATE:~12,1%



call c:\wic\DATETOJULIAN.BAT %DATE%

call c:\wic\ip.bat

copy c:\wic\download\*04.apl c:\wic\archive\%DAY%_04.apl
copy c:\wic\download\*04.apl c:\wic\download\KY%digit%%JDN%.APL

Pause 


ftp -s:C:\wic\sendapl.ftp %IP%

del c:\wic\download\*04.APL

您似乎已经找到了获取真实儒略日数的批处理文件。正如它在 stack exchange 上的 julian 标签的描述中所说,Julian 天数是自公元前 4714 年 11 月 24 日中午以来的整日数(整数),在公历,通用时间中。如果您以您期望的格式给它一个日期,您的文件 DATETOJULIAN.BAT 就会这样做;例如,现在是 2015 年 6 月 25 日晚上 7 点。您输入 6/25/2015 作为参数,它给出的 JDN = 2,457,199 是正确的。但是您似乎想要一年中的某一天,即 176。那不是儒略日期,而是序数日期。

解决方法是调用DATETOJULIAN.BAT两次。首先,找到你想要的前一年12月31日的JDN,命名为JDNDEC31。然后找到你想要的日期的JDN。然后找到序号日期,JDN-JDNDEC31.

如果其他人阅读或维护您的代码,您应该证明您没有计算真正的儒略日数,因为您没有考虑到儒略日数始终使用格林威治时间这一事实,并且儒略日从中午开始,而不是午夜。如果您想要一个使用本地时间并从午夜开始的类似日期,请使用 Lilian 日期,它有一篇关于它的维基百科文章。如果您的文件时间是以格林威治时间报告的,并且您想要一个从午夜开始的日期,请使用修改后的儒略日期,维基百科关于儒略日的文章中对此进行了描述。