.NET Core中如何将{YYYY-MM-DD_hh-mm-ss}格式字符串转为DateTime类型
.NET Core中转换{YYYY-MM-DD_hh-mm-ss}格式字符串为DateTime类型的方法
完全不需要用正则表达式,.NET Core提供了专门的日期解析方法,比正则更简单可靠。
核心方法:ParseExact 或 TryParseExact
这两个方法可以指定精确的格式字符串来解析日期,推荐用TryParseExact,它不会在格式不匹配时抛出异常,更安全。
代码示例(12小时制时间)
假设你的输入字符串是类似2024-05-20_03-45-30的格式:
using System.Globalization; string inputDate = "2024-05-20_03-45-30"; // 格式字符串要和输入严格对应:yyyy(年)、MM(月)、dd(日)、hh(12小时制)、mm(分)、ss(秒) string format = "yyyy-MM-dd_hh-mm-ss"; // 方法1:ParseExact - 格式不匹配会抛出异常 DateTime result1 = DateTime.ParseExact(inputDate, format, CultureInfo.InvariantCulture); // 方法2:TryParseExact - 推荐,格式不匹配时返回false,不会报错 if (DateTime.TryParseExact(inputDate, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime result2)) { // 转换成功,使用result2 } else { // 转换失败,处理错误逻辑 }
如果是24小时制时间
如果你的时间部分是24小时制(比如15-45-30),只需要把格式字符串里的hh改成HH即可:
string format = "yyyy-MM-dd_HH-mm-ss";
关键注意事项
- 格式字符串必须和输入字符串的结构完全一致,包括下划线、横杠这些分隔符
- 必须指定
CultureInfo.InvariantCulture,避免系统区域设置的日期格式影响解析结果 yyyy是小写的(表示公历年份),不要写成大写的YYYY(大写代表周年,通常和跨年周相关,不是常规日期的年)
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

