read date from character string
조회 수: 13 (최근 30일)
이전 댓글 표시
hi... i have data files(HDF5 format) ... in different sub folders. there are around 50,000 files. i have made a program to pick all HDF5 files from all subfolders and read. there is date and time in thair names which i want read. file names are like bellow
GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151031233116_051_METOPB_16186_DLR_03.HDF5
GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151101001652_051_METOPA_46873_DLR_03.HDF5
GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151101011234_051_METOPB_16187_DLR_03.HDF5
GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151101015816_050_METOPA_46874_DLR_03.HDF5
GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151101025358_051_METOPB_16188_DLR_03.HDF5
GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151101033940_050_METOPA_46875_DLR_03.HDF5
datenum(filename(42:56),'yyyymmddHHMMSS'); %% to read date and time from file name
this works fine but problem occurs when name of the file changes .there are few files whose names are different than above.for eg.
GOME_O3-NO2-NO2Tropo-BrO-H2O-HCHO_L2_20070920104919_049_METOPA_04770_DLR_03.HDF5
in this file some characters are missing (-SO2)
when i run a loop it runs properly but when loop find this type of name it stops there and said error. i can not delete this files.hope you understand my question.
댓글 수: 0
채택된 답변
Stephen23
2015년 11월 5일
편집: Stephen23
2015년 11월 5일
This is easy using regexp to match the date substring:
C = {'GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151031233116_051_METOPB_16186_DLR_03.HDF5'
'GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151101001652_051_METOPA_46873_DLR_03.HDF5'
'GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151101011234_051_METOPB_16187_DLR_03.HDF5'
'GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151101015816_050_METOPA_46874_DLR_03.HDF5'
'GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151101025358_051_METOPB_16188_DLR_03.HDF5'
'GOME_O3-NO2-NO2Tropo-BrO-SO2-H2O-HCHO_L2_20151101033940_050_METOPA_46875_DLR_03.HDF5'
'GOME_O3-NO2-NO2Tropo-BrO-H2O-HCHO_L2_20070920104919_049_METOPA_04770_DLR_03.HDF5'};
D = regexp(C,'\d{14}','match','once');
E = datenum(D,'yyyymmddHHMMSS');
and the output:
>> datevec(E)
ans =
2015 10 31 23 31 16
2015 11 1 0 16 52
2015 11 1 1 12 34
2015 11 1 1 58 16
2015 11 1 2 53 58
2015 11 1 3 39 40
2007 9 20 10 49 19
참고 항목
카테고리
Help Center 및 File Exchange에서 Dates and Time에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!