You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Kendo Grid筛选传来的日期字符串转换为指定格式?

解决Kendo Grid日期字符串格式转换问题

嘿,我来帮你搞定这个日期格式转换的问题!你现在遇到的核心问题是解析日期时用错了格式字符串——你用目标输出格式去解析原始的ISO日期字符串,这肯定匹配不上嘛,自然得不到想要的结果。

问题分析

你从Kendo Grid拿到的是标准ISO 8601格式的日期字符串:2018-05-01T18:30:00.000Z,而你想用MMM dd yyyy(比如May 01 2018)作为解析格式,这完全不匹配,所以代码会抛出解析异常,或者得到错误的日期值。

正确的解决步骤

我们需要分两步走:

  1. 匹配原始字符串的格式解析出DateTime对象
  2. 再将DateTime对象转换为你想要的目标格式

正确代码示例

方法一:精确解析ISO格式(推荐,更严谨)

using System.Globalization;

// 从Kendo Grid获取的原始日期字符串
string kendoDate = "2018-05-01T18:30:00.000Z";

// 用ISO格式精确解析日期
if (DateTime.TryParseExact(
    kendoDate,
    "yyyy-MM-dd'T'HH:mm:ss.fffZ",
    CultureInfo.InvariantCulture,
    DateTimeStyles.None,
    out DateTime parsedDate))
{
    // 转换为目标格式 "MMM dd yyyy"
    string formattedDate = parsedDate.ToString("MMM dd yyyy", CultureInfo.InvariantCulture);
    // 输出结果:May 01 2018
}
else
{
    // 处理解析失败的情况
}

方法二:直接解析ISO格式(更简洁,因为ISO是标准格式)

using System.Globalization;

string kendoDate = "2018-05-01T18:30:00.000Z";
// 直接解析标准ISO日期字符串
DateTime parsedDate = DateTime.Parse(kendoDate, CultureInfo.InvariantCulture);
// 转换为目标格式
string formattedDate = parsedDate.ToString("MMM dd yyyy", CultureInfo.InvariantCulture);
// 输出结果:May 01 2018

为什么你的原代码不行?

你的原代码:

string date = (DateTime.ParseExact(constant.ToString(), "MMM dd yyyy", CultureInfo.InvariantCulture)).ToString("MMM dd yyyy");

这里的ParseExact第一个参数是ISO格式的字符串,第二个参数却是MMM dd yyyy,两者格式完全不匹配,解析过程直接失败,自然得不到正确结果。

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

火山引擎 最新活动