ENVI_IDL:如何对文件名的日期进行格式化输出?

简介: ENVI_IDL:如何对文件名的日期进行格式化输出?

00 前言

此前对于这方面知识不是很了解,现在也是。

所以现在稍微总结一下,就从文件名的获取 ==> 文件名的日期截取 ==> 日期(str)的类型转换(int)

==> 日期的整理(乱的) ==> 格式化输出.

这里我假定大家获取到了某一文件的路径如下:

D:\IDL_program\experiment_data\chapter_1\

MODIS_2018_mod04_3k\MYD04_3K.A2018121.0545.061.2018121172155.hdf


01 第一步,使用file_basename()函数路径中的获取文件名

path = 'D:\IDL_program\experiment_data\chapter_1\MODIS_2018_mod04_3k\MYD04_3K.A2018121.0545.061.2018121172155.hdf'
file_name = file_basename(path, '.hdf')


FILE_BASENAME()函数

语法:Result = FILE_BASENAME(Path [, RemoveSuffix] [, /FOLD_CASE])

参数说明:

path:(必选)输入路径名<字符串格式>

RemoveSuffix:(可选)输入需要删除的后缀名<字符串格式>

FOLD_CASE:(可选)关于删除后缀名是否大小写的问题,这里99%基本用不到,故不作解释.


02 第二步,使用strmid()函数获取文件名的日期

在获取之前,需要说明文件名日期的相关信息。获取得到的文件名file_name = MYD04_3K.A2018121.0545.061.2018121172155,其中,从左往右第10(从0开始)个字符到第16个字符是我们需要的字符串即2018121,它表示2018年的第121天。

1. year = strmid(file_name, 10, 4)
2. days = strmid(file_name, 14, 3)


STRMID()函数

语法:Result = STRMID(Expression, First_Character [, Length] , /REVERSE_OFFSET )

参数说明:

Expression:(必选)输入需要截取的字符串

FIrst_Character:(必选)输入需要截取部分的第一个字符的索引(从0开始)

Length:(可选)输入第需要截取部分的

REVERSE_OFFSET:指定First_Character应从字符串的结尾而不是开头开始计数(例如倒数第一个字符的索引为0,倒数第二个字符的索引为1如此)。然后,长度从该位置向右移动到字符串的末端。这将可以从末尾简单地提取字符串。


03 第三步,将获取的日期进行类型转换

很明显,string类型的变量year和days是无法进行计算的,所以需要进行字符串转整型。

year = fix(year)
days = fix(year)

FIX()函数

无需过多说明,就是将浮点数或者字符串型的整数转化为整数.或许和想象的不一样,它并不是使用int()函数而是我们没有见过的fix()函数进行类型转换.


04 第四步,将日期进行整理

日是有一定的难度.或许你会想着自己计算然后编写一个函数用于年月日的获取,这虽然可行但是暂时没有必要。IDL专门提供了两个函数用于儒略日与正常年月日之间的转换。


一个是JULDAY()函数,传入月、日、年返回该天距离1582年10月4日的总天数;


另一个是CALDAT()函数,传入距离1582年10月4日的总天数,返回该天的月、日、年。


那么我们这里的2018121的总体思路是,将2017年12月31日传入JULDAY函数返回儒略日,然后将该儒略日加上121天,最后将新的儒略日传给CALDAT函数得到返回的月、日、年。

julday_date = julday(12, 31, year - 1)
julday_date += days
caldat, julday_date, month, day, year


05 第五步,进行格式化输出

直接用print输出即可.

; 方法1
print, format='(i04, "-", i02, "-", i02)', year, month, day
; 方法2
print, format='(3(i0, :, "-"))', year, month, day


输出结果展示:



目录
相关文章
|
11月前
|
Web App开发 存储 数据可视化
VCF文件修改染色体格式的方法
VCF文件修改染色体格式的方法
|
2月前
|
存储 C语言 C++
C++遍历文件夹获取各文件名称并筛选指定格式类型的文件或具有特定名称的文件
C++遍历文件夹获取各文件名称并筛选指定格式类型的文件或具有特定名称的文件
|
12月前
ENVI_IDL: 如何批量将Year-Days文件名转换为Year-Month-Day文件名?
ENVI_IDL: 如何批量将Year-Days文件名转换为Year-Month-Day文件名?
73 0
|
12月前
|
存储 C语言 索引
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
249 0
|
10月前
|
Python
Python编码格式、文件操作、目录操作
Python编码格式、文件操作、目录操作
23 0
|
12月前
|
存储 编解码
ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析
ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析
320 1
|
12月前
|
编解码
ENVI_IDL: 读取文本文件并输出为Geotiff格式+简单均值插值
ENVI_IDL: 读取文本文件并输出为Geotiff格式+简单均值插值
201 0
|
12月前
ENVI_IDL: 文本文件的读取(主要是txt、csv文件)
ENVI_IDL: 文本文件的读取(主要是txt、csv文件)
344 0
fastq文件转换成fasta文件
fastq文件转换成fasta文件
235 0
|
定位技术 iOS开发
讲解:如何将手机联系人转换成vcf格式(vcard格式)?
1、转换成vcf格式也就是vcard格式的话,你先在电脑打开个软件,金芝号码提取导入助手,然后把你的材料也就是一般常见的铭字和号码复制好,选择软件的第三个功能模块“导入通讯录”,依次把刚才复制好的材料,分别粘贴进软件的第一个框和第二个框。2、点击“转换通讯录”,你将得到一个vcf格式的文件(vcard格式),你把这个vcf文件保存到电脑桌面。3、当然了,我们的最终目的肯定不住于此。我们通过电脑矀xin或电脑Q,把这个vcf格式的文件发送给你手机矀xin或手机Q,你在手机上打开这个vcard,那么就会自动批量把号码导入通讯录了。
讲解:如何将手机联系人转换成vcf格式(vcard格式)?