Add another file name date parsing format

Also redid code so more formats would be easy
This commit is contained in:
2026-03-13 08:05:11 +09:00
parent a1858443e8
commit de621fe9dc
+21 -9
View File
@@ -1,10 +1,12 @@
using System; using System;
using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Tmds.DBus.Protocol;
namespace MayShows.Helpers; namespace MayShows.Helpers;
@@ -23,16 +25,26 @@ class Utilities
public static DateOnly? CheckValidDateInString(string str) public static DateOnly? CheckValidDateInString(string str)
{ {
// https://stackoverflow.com/a/14918404/3938401 // https://stackoverflow.com/a/14918404/3938401
var rgx = new Regex(@"\d{4}-\d{2}-\d{2}"); // formats = regex format -> DateTime parsing format
var mat = rgx.Match(str); var formats = new Dictionary<string, string>
if (mat.Success)
{ {
var dtStr = mat.ToString(); {@"\d{4}-\d{2}-\d{2}", "yyyy-MM-dd"},
string[] formats = ["yyyy-MM-dd"]; {@"\d{8}", "yyyyMMdd"}
DateTime parsedDateTime; };
var didWork = DateTime.TryParseExact(dtStr, formats, CultureInfo.InvariantCulture, foreach (var data in formats)
DateTimeStyles.None, out parsedDateTime); {
return didWork ? DateOnly.FromDateTime(parsedDateTime) : null; var rgx = new Regex(data.Key);
var mat = rgx.Match(str);
if (mat.Success)
{
var dtStr = mat.ToString();
var didWork = DateTime.TryParseExact(dtStr, [data.Value], CultureInfo.InvariantCulture,
DateTimeStyles.None, out var parsedDateTime);
if (didWork)
{
return DateOnly.FromDateTime(parsedDateTime);
}
}
} }
return null; return null;
} }