格式化日期时间.解析信息



早上好,

我对日期时间格式有问题,格式为"星期一 Jun 15 2015 00:00:00 GMT+0200(中欧夏令时间)"。

var value = "Mon Jun 15 2015 00:00:00 GMT+0200 (Central Europe Daylight Time)";
DateTime.Parse(value) throws CastException.

我也尝试使用ParseExact 方法,该方法功能更强大,但仍然无法访问

var date = DateTime.ParseExact(
        "Mon Jun 15 2015 00:00:00 GMT+0200 (Central Europe Daylight Time)",
        "ddd MMM dd yyyy HH:mm:ss 'GMT+0000 (Central Europe Daylight Time)'",
        CultureInfo.InvariantCulture);
var date = DateTime.ParseExact(
        "Mon Jun 15 2015 00:00:00 GMT+0200 (Central Europe Daylight Time)",
        "ddd MMM dd yyyy HH:mm:ss 'GMT+0000 (GMT Standard Time)'",
        CultureInfo.InvariantCulture);

一切都失败了...

我还想尝试破解并制作一个子字符串(4,11),但 IE 返回的格式与 chrome 不同,因此无法使用......

我从网格中的剑道过滤器发送它。

所以我的问题是:

1)有没有办法通过C#解析这种格式?

2)有没有办法对剑道过滤器说"发送另一种格式"?格式和解析格式忽略我...

我想要格式的预期格式是 dd.MM.yyyy ..谢谢你的帮助

编辑:我的剑道代码看起来像:

.....
{
            field: "DateField",
            type: "date",
            width: "110px",
            template: function (e) {
                return $.format.date(e.DateField, "dd.MM.yyyy");
            },
            filterable: {
                extra: true,
                operators: {
                    date: {
                        gt: "Is greater than",
                        lt: "Is less than"
                    }
                },
                ui: function (element) {
                    element.kendoDatePicker({
                        format: "dd.MM.yyyy"
                    });
                }
            }
        },

with ParseExact():

using System.Globalization; 
var value = "Mon Jun 15 2015 00:00:00 GMT+0200 (Central Europe Daylight Time)";
var trimedValue = value.Substring(0, value.IndexOf(" ("));
var dateTime = DateTime.ParseExact(trimedValue, "ddd MMM dd yyyy HH:mm:ss 'GMT'zzz", CultureInfo.InvariantCulture);

您的DateTime.Parse代码失败,因为您的CurrentCulture没有该字符串的标准日期和时间格式。任何文化都不可能有这种形式。顺便说一下,时区意识DateTime

您的ParseExact示例失败,因为;第一个示例具有偏移量+0200,但字符串具有+0000。这仍然是第二个,而且您的时区也不同。( Central Europe Daylight TimeGMT Standard Time

由于您的字符串中有 UTC 偏移部分,我会选择DateTimeOffset使用"K"格式说明符进行解析,而不是像;

string s = "Mon Jun 15 2015 00:00:00 GMT+0200 (Central Europe Daylight Time)";
DateTimeOffset dto;
if (DateTimeOffset.TryParseExact(s, "ddd MMM dd yyyy HH:mm:ss 'GMT'K '(Central Europe Daylight Time)'", 
                                 CultureInfo.InvariantCulture,
                                 DateTimeStyles.AssumeUniversal, out dto))
{
    Console.WriteLine(dto);
}

现在你有一个{15.06.2015 00:00:00 +02:00} DateTimeOffset,我认为这可能是你能得到的最好的东西

相关内容

  • 没有找到相关文章

最新更新