格式化日期时间.解析信息
本文关键字:信息 时间 日期 格式化 | 更新日期: 2023-09-27 17:56:26
早上好,
我对日期时间格式有问题,格式为"星期一 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 Time
和GMT 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
,我认为这可能是你能得到的最好的东西。