【问题标题】:How to convert date string to UTC format如何将日期字符串转换为 UTC 格式
【发布时间】:2020-06-26 23:22:18
【问题描述】:

我有一个包含所有按日期命名的 .csv 文件的文件夹。它们看起来像这样:

20200625210308.csv --> (yyyyMMddHHmmss)

我正在尝试按日期比较这些文件,以便删除除最新文件之外的所有文件。

假设我已经处理了所有的拆分等;如何将 20200625210308 转换为 UTC 日期以便比较文件?

【问题讨论】:

  • 您可以使用 DateTime.ParseExact 将字符串转换为日期。搜索文档以获取有关语法的更多详细信息。
  • 您不需要转换它们 - 文件的名称以 SARGable 格式格式化。只需订购它们,或获取文件夹中的“最后一个”文件。或者由于某种原因这不起作用?
  • @Clockwork-Muse 对不起,我应该提到我在编程方面相对较新。我没有听说过 SARGable 格式,我的谷歌搜索让我找到了与 SQL 有关的信息。无论如何,我认为您所说的是由于日期/时间字符串的格式化方式,文件将始终按顺序排列。对吗?
  • @JustinFeistner 是的。只需将文件名排序为字符串(即按字典顺序),它们也会自动按日期顺序排列。
  • 是的,完全正确(在此处与 Sweeper 相呼应)。它通常出现在 SQL 中,因为列值需要转换或通过要搜索的函数运行。 (不要太担心自己是新人——我只是在日期/时间方面花了很多时间,所以这让我更加兴奋;我自己在其他领域也有差距)。最后一个问题,我猜 - 你需要转换时区/偏移量,还是这些日期已经在 UTC 时区/0 偏移量中?

标签: c# utc


【解决方案1】:

您不需要将它们转换为 DateTime 值:您的日期/时间字符串 20200625210308.csv 的基本名称是 ISO 8601 紧凑形式YYYYMMDDhhmmss。 ISO 8601 日期/时间值设计是为了正确整理和比较。

一个简单的字符串比较就足够了。

鉴于这些文件名中的string[]filenames,您只需要说一下

var mostRecentFileName = filenames.Max();

无需过度设计解决方案。

【讨论】:

    【解决方案2】:

    这是一个简单的控制台应用程序,可为您提供 UTC 算法。您必须从 UTC 结果中弄清楚您想要什么,然后再进行自己的文件日期比较。

    using System;
    using System.Globalization;
    
    namespace DateTimeFormatTest
    {
        class Program
        {
            private static string format = "yyyyMMddHHmmss";
            static void Main(string[] args)
            {
    
                Console.WriteLine(GiveMeTheDateTimeInUtc("20200625210308"));
                Console.ReadLine();
            }
    
            private static string GiveMeTheDateTimeInUtc(string filename)
            {
                var dateTime = DateTime.ParseExact(filename, format, CultureInfo.InvariantCulture);
                return dateTime.ToUniversalTime().ToString();
            }
        }
    }
    

    【讨论】:

    • nit:format 应该是 readonly。然而,更令人担忧的是ToUniversalTime() 的使用,它将源日期时间视为本地时间 - 如果文件名在当前进程的时区中,则返回值将关闭。
    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多