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


输出结果展示:



目录
相关文章
|
6月前
|
存储 Python
如何在Python中读取文件的内容,并进行格式化的处理?
如何在Python中读取文件的内容,并进行格式化的处理?
220 2
|
4月前
|
数据格式 Python
【Python】已解决:Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
【Python】已解决:Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
311 0
|
Web App开发 存储 数据可视化
VCF文件修改染色体格式的方法
VCF文件修改染色体格式的方法
ENVI_IDL: 如何批量将Year-Days文件名转换为Year-Month-Day文件名?
ENVI_IDL: 如何批量将Year-Days文件名转换为Year-Month-Day文件名?
90 0
|
存储 C语言 索引
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
301 0
|
存储 编解码
ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析
ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析
412 1
ENVI_IDL: 文本文件的读取(主要是txt、csv文件)
ENVI_IDL: 文本文件的读取(主要是txt、csv文件)
451 0
|
编解码
ENVI_IDL: 读取文本文件并输出为Geotiff格式+简单均值插值
ENVI_IDL: 读取文本文件并输出为Geotiff格式+简单均值插值
257 0
方法:怎么把电话号码做转成vcf文件格式?
第(一)步:空手肯定不行呀。你先准备号码和软件《金芝号码提取导入助手》。在电脑上打开这个软件,然后把你的号码复制粘贴到软件的第三个功能模块“导入通讯录”。第(二)步:点按钮“转换通讯录”,就可以在电脑上得到一个vcf文件,你把这个文件保存到电脑桌面。然后再发给你的手机。第(三)步:从电脑嶶xin发给你的手机q,在手机上打开这个vcf文件,就可以导入通讯录了。以上便是:怎么把电话号码做转成vcf文件格式?的方法。提醒:操作的时候,如果你只有号码,那就把号码重复放两次到软件的两个框,如果你有人铭更好,放到软件左边的框,没有就用号码代替。
方法:怎么把电话号码做转成vcf文件格式?
|
定位技术 iOS开发
讲解:如何将手机联系人转换成vcf格式(vcard格式)?
1、转换成vcf格式也就是vcard格式的话,你先在电脑打开个软件,金芝号码提取导入助手,然后把你的材料也就是一般常见的铭字和号码复制好,选择软件的第三个功能模块“导入通讯录”,依次把刚才复制好的材料,分别粘贴进软件的第一个框和第二个框。2、点击“转换通讯录”,你将得到一个vcf格式的文件(vcard格式),你把这个vcf文件保存到电脑桌面。3、当然了,我们的最终目的肯定不住于此。我们通过电脑矀xin或电脑Q,把这个vcf格式的文件发送给你手机矀xin或手机Q,你在手机上打开这个vcard,那么就会自动批量把号码导入通讯录了。
讲解:如何将手机联系人转换成vcf格式(vcard格式)?