From 32b69e8fb6de7fb0b22f53ce357557d936d17aa1 Mon Sep 17 00:00:00 2001
From: Lionel GUEZ <guez@lmd.ens.fr>
Date: Thu, 29 Apr 2021 23:01:16 +0200
Subject: [PATCH] Extract format from input file name

It is not enough to parse the input file name and extract the date
because, when we process other dates, we have to construct file names
in the same format. So do not use `parser.parse` for the input file
name, try various formats and remember the one that works.
---
 Convert_Matlab/inst_eddies_v6.py | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/Convert_Matlab/inst_eddies_v6.py b/Convert_Matlab/inst_eddies_v6.py
index 4db61cae..34c1b4e2 100755
--- a/Convert_Matlab/inst_eddies_v6.py
+++ b/Convert_Matlab/inst_eddies_v6.py
@@ -96,8 +96,14 @@ def write(writers, cell, cyclone):
 if len(sys.argv) == 1: sys.exit("Required argument: first input .mat file")
 adt_file = sys.argv[1]
 dirname, basename = path.split(adt_file)
-my_date = parser.parse(basename, yearfirst=True, dayfirst = False,
-                       fuzzy = True).date()
+valid_date_formats = ["adt_%Y-%m-%d.mat", "adt_%Y%m%d.mat"]
+
+for date_format in valid_date_formats:
+    try:
+        my_date = datetime.datetime.strptime(basename, date_format).date()
+    except ValueError:
+        pass
+
 d = my_date - datetime.date(1950, 1, 1)
 d = d.days
 
@@ -160,7 +166,7 @@ while True:
     my_date += datetime.timedelta(1)
     if my_date > final_date: break
     d += 1
-    basename = my_date.strftime("adt_%Y-%m-%d.mat")
+    basename = my_date.strftime(date_format)
     adt_file = path.join(dirname, basename)
     
 nml = f90nml.Namelist()
-- 
GitLab