How to format date as 2023/04/20
Some data source have simple single date format, not multiple date format. I would use FME dateTimeConverter to do this simple job.
However, some source data have multiple date format in same column, FME dateTimeConverter would not work, it only work with single format. See below example with multiple date format in one column
https://transparentgov.net:3200/googlemaps141/default?layer_id=0&layer=NYPAD2_Easement¢er_lat=41.18333803421051¢er_long=-73.7791579159306¢er_zoom=13&url=https%3A%2F%2Fservices6.arcgis.com%2FDZHaqZm9cxOD4CWM%2FArcGIS%2Frest%2Fservices%2FNYPAD2_Easement%2FFeatureServer&panto=0&overlayType=overlayType_none&select_field=14&select_fieldvalue=-1&distinctorgroupby=groupby
https://transparentgov.net:3200/googlemaps141/default?layer_id=0&layer=NYPAD_2_Fee¢er_lat=43.07607440739406¢er_long=-74.21026135147456¢er_zoom=19&url=https%3A%2F%2Fservices6.arcgis.com%2FDZHaqZm9cxOD4CWM%2FArcGIS%2Frest%2Fservices%2FNYPAD_2_Fee%2FFeatureServer&panto=0&overlayType=overlayType_none&select_field=14&select_fieldvalue=-1&distinctorgroupby=groupby
FME auto detect does not work, it only work if date is already in ISO-date or FME default date format, other than that, it failed.
Use regex to filter out different format of date
test regex here : https://www.debuggex.com/ or https://regex101.com
JavaScript Regex Cheatsheet is here
https://www.debuggex.com/cheatsheet/regex/javascript
1) find 2023-10-04 use regex \d{4}-\d{2}-\d{2}
FME function use @DateTimeParse(@Value(Src_Date), %Y-%m-%d)
https://regex101.com/r/ETRxIg/2
https://www.debuggex.com/r/pF2sOvYyZldizz3Z
2) find 31/04/2023 or 31/4/2023
use regex (0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/\d{4}
FME function use
@DateTimeParse(@Value(Src_Date), %d/%m/%Y) (1 digital month ok,if with delimit)
https://regex101.com/r/ETRxIg/1
https://www.debuggex.com/r/OGAZSl0I6qsz1992
3) find 4/3/2020 or 04/03/2020
use regex ^(0?[1-9]|1[012])\/(0?[1-9]|[12][0-9]|3[01])\/\d{4}
FME function use
@DateTimeParse(@Value(Src_Date), %m/%d/%Y) (1 digital month ok,if with delimit)
@DateTimeParse(@Value(Src_Date), %N/%e/%Y) (I am not use here)
FME document is here https://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Transformers/!Transformer_Parameters/Date-Time-Functions.htm
https://regex101.com/r/PTGoVi/2
https://www.debuggex.com/r/enm2dZa4eO5ql4es
4) find 2021/11/08 or 2021/1/8
use regex \d{4}\/(0?[1-9]|1[012])\/(0?[1-9]|[12][0-9]|3[01])
FME function use
@DateTimeParse(@Value(Src_Date), %Y/%m/%d)
https://regex101.com/r/IJALbe/1
https://www.debuggex.com/r/28Z918C_CsmfI6KK
5) find 2023 year only
use regex ^\d{4}$
FME function use @DateTimeParse(@Value(Src_Date), %Y) will fail, not sure why, should be FME bugs not fixed.
alternatively, FME default format is 20230101 without slash, or any delimit
so I use @Value(Src_Date)0101
Never use @Value(Src_Date)0000 (Warning: 20230000 is not valid date will fail your DateTimeConvertor)
https://regex101.com/r/PseMzJ/1
https://www.debuggex.com/r/t3Zch5QfIDrWnRnf
Final regex table