You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用DateTime.TryParseExact解析带引号的C#时间戳字符串?

解决带引号日期字符串的DateTime.TryParseExact解析问题

嘿,这个问题我之前折腾过好一会儿!其实完全不用先费劲剥离引号,DateTime.TryParseExact可以直接匹配带引号的日期格式,关键是要写对格式字符串。

核心解决方案

你的输入字符串是var dtStr = "\"2018-04-09\"";,对应的格式字符串需要把引号也作为匹配的一部分。这里有两种清晰的写法:

  1. 常规字符串转义写法
    在格式字符串里,用\"来表示一个实际的双引号,代码示例:
using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        var dtStr = "\"2018-04-09\"";
        if (DateTime.TryParseExact(dtStr, "\"yyyy-MM-dd\"", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime result))
        {
            Console.WriteLine($"解析成功:{result}");
        }
        else
        {
            Console.WriteLine("解析失败");
        }
    }
}
  1. 逐字字符串写法(可读性更强)
    用带@的逐字字符串,里面用两个双引号""表示一个实际的双引号,不用反复写转义符:
var format = @"""yyyy-MM-dd"""; // 逐字字符串中""代表一个实际的"
if (DateTime.TryParseExact(dtStr, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime result))
{
    // 处理解析后的DateTime对象
}

为什么这样可行?

TryParseExact的格式字符串允许包含字面量字符,只要把它们放在引号里就会被当作固定匹配的内容。C#的字符串转义规则决定了:

  • 常规字符串中,\"会被解析为一个双引号;
  • 逐字字符串中,""会被解析为一个双引号。

这样格式字符串就能完整匹配你输入的"2018-04-09",不需要额外处理引号。

小提醒

别忘了引用System.Globalization命名空间,使用CultureInfo.InvariantCulture可以避免因系统区域设置不同导致的解析错误——毕竟你的日期格式是固定的yyyy-MM-dd,和区域无关。

内容的提问来源于stack exchange,提问作者Erik Kinding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:12:06