目录
01 问题的提出
这里遇到一个问题:
对于下方的文件名,
如何将其中的例如2020042(表示2020年的第42天) 、2022003(表示2022年的第3天)等转换为年月日的格式。
02 思路解决
如果不想细看,这里给出三个关键函数:
julday函数
:
Result
= JULDAY(
Month, Day, Year, Hour, Minute, Second
[, /
MODIFIED
])
caldat函数
:CALDAT,
Julian
,
Month
[,
Day
[,
Year
[,
Hour
[,
Minute
[,
Second
]]]]] [, /
MODIFIED
]
file_move函数
:FILE_MOVE,
SourcePath
,
DestPath
[, /
ALLOW_SAME
] [, /
NOEXPAND_PATH
] [, /
OVERWRITE
] [, /
REQUIRE_DIRECTORY
] [, /
VERBOSE
]具体使用可以查看文档,这里不再详细说明。
给出转换代码,这里仅提供思路。
pro days2_specific_date
; 该程序用于解决如何将Year-Days ==> Year-Month-Day
; 定义文件路径目录和文件名前缀
dir = 'path/to/files/' ; 所有文件放置的目录路径
prefix = 'MYD04_3K.A' ; 所有文件名称的公共部分
; 获取文件列表
files = file_search(dir + prefix + '*.tif*', count=n_files)
; 遍历每个文件并处理文件名
for i=0, n_files-1 do begin
; 获取文件名
full_path = files[i]
filename = file_basename(full_path)
; 提取年份和儒略日信息
year = strmid(filename, 10, 4)
day_of_year = strmid(filename, 15, 3)
; 将儒略日转换为日期格式
date = julday(year, 1, 1) + day_of_year - 1
CALDAT, date, year, month, day
; 生成新的文件名
new_filename = prefix + string(year, FORMAT='(I4.4)') + $
string(month, FORMAT='(I2.2)') + $
string(day, FORMAT='(I2.2)') + $
'.tif'
; 重命名文件
file_move, full_path, dir + new_filename
endfor
end