C#中将EEE MMM d HH:mm:ss z yyyy格式字符串转DateTime并计算日差
C# 转换特殊格式日期并计算间隔实现方案
核心实现代码
首先需要引用命名空间:
using System.Globalization;
完整业务逻辑代码:
// 指定英文文化环境,适配英文星期、月份缩写 var enCulture = new CultureInfo("en-US"); // 匹配输入字符串的格式规则 var dateFormat = "ddd MMM d HH:mm:ss z yyyy"; string dt1Str = "Wed Jul 14 07:59:30 BST 2021"; string dt2Str = "Fri Jul 16 08:59:30 BST 2021"; // 推荐用DateTimeOffset处理带时区的日期,规避时区转换报错 DateTimeOffset dt1 = DateTimeOffset.ParseExact(dt1Str, dateFormat, enCulture); DateTimeOffset dt2 = DateTimeOffset.ParseExact(dt2Str, dateFormat, enCulture); // 计算两个日期的时间间隔 TimeSpan interval = dt2 - dt1; // 总间隔天数(带小数,比如2天1小时返回2.041666...) double totalIntervalDays = interval.TotalDays; // 如果需要取整数自然日间隔,可按日期截断计算 int naturalDayDiff = (dt2.Date - dt1.Date).Days; // 如需要转为DateTime类型,按需取UTC时间或本地时间 DateTime dt1Utc = dt1.UtcDateTime; DateTime dt1Local = dt1.LocalDateTime;
异常场景处理
部分特殊时区缩写(如示例中的BST英国夏令时)在部分系统环境下可能识别失败,可先对输入字符串做预处理:将时区缩写替换为对应的UTC偏移,例如将
BST替换为+01:00,同时将格式字符串调整为"ddd MMM d HH:mm:ss zzz yyyy"即可兼容所有环境。
内容的提问来源于stack exchange,提问作者pughazendhi C
相关产品推荐
相关产品推荐

