所以我正在使用一种API,其中以以下格式DIE, 28. AUG 2018 12:38:38
我找到的最接近的日期时间格式是此ddd, dd. MMM yyyy HH:mm:ss
。
仅当其DI
时有效,但API将这一天作为DIE
提供。
是否存在可以解析DIE, 28. AUG 2018 12:38:38
的格式,我相信该API的开发人员使用了其他格式。
有人知道这可能是什么吗?
编辑:我尝试过的一些代码
static void Main(string[] args)
{
const string DateTimeFormat = "ddd, dd. MMM yyyy HH:mm:ss";
var deCultureInfo = new CultureInfo("de-DE");
string input = "DIE, 28. AUG 2018 14:12:01";
// both throws exception
var timestamp1 = DateTime.ParseExact(input, DateTimeFormat, deCultureInfo);
var timestamp2 = DateTime.Parse(input, deCultureInfo);
//Console.WriteLine(DateTime.Now.ToString(deCultureInfo));
}
答案 0 :(得分:8)
您可以在已使用的ddd
的属性AbbreviatedDayNames
中覆盖DateTimeFormatInfo
:
const string DateTimeFormat = "ddd, dd. MMM yyyy HH:mm:ss";
var deCultureInfo = new CultureInfo("de-DE");
var input = "DIE, 28. AUG 2018 14:12:01";
CultureInfo ci = CultureInfo.CreateSpecificCulture("de-DE");
DateTimeFormatInfo dtfi = ci.DateTimeFormat;
// addjust this to your german strings
dtfi.AbbreviatedDayNames = new[] { "SON", "MON", "DIE", "MIT", "DON", "FRE", "SAM" };
var timestamp1 = DateTime.ParseExact(input, DateTimeFormat, dtfi);
看到此内容
答案 1 :(得分:5)
仅提供另一种选择:请勿。
无论那一部分是多余的。 2018年8月28日是不可能的。那里的信息对计算机没有价值。这种格式适用于人类,他们不能仅仅在几个CPU周期内“查找”。
不解析input
,而仅解析input.Split(",").Last().Trim()
。该API显然不是由专家编写的,也不是要供另一台计算机使用(德语日期格式,工作日,工作日的错误格式)。看起来这是显示给产品最终用户的字符串。认为它随时都有可能破坏更改,这可能是用户在特定时间“最喜欢”的情况。