代码之家  ›  专栏  ›  技术社区  ›  gneric

这是有效的德国日期时间区域性格式吗?

  •  4
  • gneric  · 技术社区  · 6 年前

    所以我使用的是一个API,其中以以下格式检索日期时间 DIE, 28. AUG 2018 12:38:38

    我发现最接近的日期时间格式是 ddd, dd. MMM yyyy HH:mm:ss . 只有当它 DI 但是API今天提供的 DIE .

    是否存在可以分析的格式 死亡,28。2018年8月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));
    
    }
    
    2 回复  |  直到 6 年前
        1
  •  5
  •   nvoigt    6 年前

    只是提供另一种选择: 只是不要 .

    不管那部分是什么,都是多余的。2018年8月28日是不可能的。那里的信息对计算机没有价值。这种格式是为人类设计的,他们不能只在几个CPU周期内“查找”。

    不要解析 input 只是解析 input.Split(",").Last().Trim() . 显然,这个API不是由专家编写的,也不打算被另一台计算机使用(德国日期格式,星期日, 错误的 工作日格式)。似乎这是一个向产品最终用户显示的字符串。把它看作是随时打破变化的风险,它可能是任何用户在特定时间“最喜欢”的东西。

        2
  •  8
  •   ChristianMurschall    6 年前

    您可以覆盖 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);
    

    从中查看 doku.