我应该使用ToString()或GetDateTimeFormats()来格式化DateTime吗?

Raj*_*dev 11 .net c# formatting datetime string-formatting

我知道如何格式化DateTime为a String.可能有很多方法可以将a格式化DateTime为a String,我发现很少有与DateTime格式相关的问题.

但我发现并尝试了两种方法:

  1. GetDateTimeFormats()
  2. ToString("MM/dd/yyyy")

我试过这段代码:

public static class DateTimeFormates
{
    public static string FormatMyDate(this DateTime DT)
    {
        // My Actual Date Time Comes in this Format
        //8/23/2013 12:43:12 PM

        // I'm expecting Format like below

        String FormatWayOne = DT.GetDateTimeFormats()[3];
        //08/23/2013

        String FormatWayTwo = DT.ToString("MM/dd/yyyy");
        //08/23/2013

        return FormatWayOne;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个Global类的Global方法来格式化DateTime为a String.但在这里我想知道哪种方法是最佳实践,所以我可以使用它?在整个应用程序中调用该方法.

key*_*rdP 9

GetDateTimeFormats不是替代品,ToString反之亦然.如果您知道自己想要的格式,则无需拨打电话GetDateTimeFormats.除了使用起来更清楚之外ToString,还有用于说明这一情况的文件GetDateTimeFormats(强调我的)

由于此方法使用区域性敏感数据,因此您不应假设对该方法的多次调用将返回相同的数据.如果当前文化发生变化,用户覆盖单个文化设置,或者系统的文化数据发生更新,则此方法返回的数据可能会更改.

这可能会破坏您的代码,因为在另一种文化中运行时,第三个元素可能是其他元素.

通过使用ToString,您可以避免遍历所有日期格式(因此效率更高),并且您可以更清楚地了解您喜欢的格式,同时确保返回的格式是您想要的格式.


It'*_*ie. 6

ToString更清晰,并且它不使用可能在下一个框架版本/另一个文化中不起作用的幻数.使用ToString().


Ehs*_*san 5

哪一个是好的做法或最佳方式

两者都适合自己的需求。

这两种方式的区别?

获取日期时间格式()

将此实例的值转换为标准日期和时间格式说明符支持的所有字符串表示形式。这意味着这是一项昂贵的操作,每次获取第三个元素可能会给您不同的结果。您不需要转换为所有格式,为什么要转换?

ToString()

使用指定的格式将当前 DateTime 对象的值转换为其等效的字符串表示形式。

任何建议或想法?

第二种方法 (ToString) 仅转换为您所需的格式,并且也更具可读性。因此更可取。然而,如果您使用第一种方法,当您只需要一种格式时,您将转换为大约 100 种格式。