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

C#中DateTimeOffset值「2019-01-31T17:32:00-05:00」对应的格式是什么?

C# DateTimeOffset 格式校验方案

你需要匹配的是ISO 8601带时区偏移的完整日期时间格式,对应的C#格式字符串为yyyy-MM-ddTHH:mm:sszzz,其中zzz字段会自动适配±HH:mm格式的时区偏移,完全兼容东部时区夏令时/冬令时切换带来的偏移值变化。

场景1:已有DateTimeOffset?值,校验其字符串表示符合要求

using System.Globalization;

public bool CheckDateTimeOffsetFormat(DateTimeOffset? input)
{
    // 可空类型非空校验
    if (!input.HasValue)
    {
        return false;
    }

    const string targetFormat = "yyyy-MM-ddTHH:mm:sszzz";
    // 转为指定格式字符串后做严格校验
    string formattedStr = input.Value.ToString(targetFormat, CultureInfo.InvariantCulture);
    return DateTimeOffset.TryParseExact(formattedStr, targetFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out _);
}

场景2:从原始字符串解析为DateTimeOffset?,同时校验格式

using System.Globalization;

public bool TryParseCustomDateTime(string input, out DateTimeOffset? result)
{
    result = null;
    const string targetFormat = "yyyy-MM-ddTHH:mm:sszzz";
    
    if (DateTimeOffset.TryParseExact(input, targetFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTimeOffset parsedVal))
    {
        result = parsedVal;
        return true;
    }
    return false;
}

格式字段说明

  • yyyy:4位完整年份
  • MM:2位月份,不足自动补0
  • dd:2位日期,不足自动补0
  • T:固定分隔符,区分日期和时间片段
  • HH:24小时制2位小时,不足自动补0
  • mm:2位分钟,不足自动补0
  • ss:2位秒数,不足自动补0
  • zzz:带正负号的时区偏移,格式为HH:mm,可正常匹配东部时区夏令时的-04:00和冬令时的-05:00

注意:必须传入CultureInfo.InvariantCulture参数,避免不同地区的系统文化设置修改日期、时间分隔符,保证格式严格匹配要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:15:10