C# C日期时间格式,包括日期/月/年,而不是日期

C# C日期时间格式,包括日期/月/年,而不是日期,c#,datetime,C#,Datetime,我想使用标准日期格式,在电脑的标准区域设置中显示日期、月份和年份。但是,我只能找到D,其中列出了日期、月份和年份。有没有什么方法可以让我把这一天从这一天中删除,或者用其他方法来获得我想要的产出 DateTime date1 = new DateTime(2008, 4, 10); Console.WriteLine(date1.ToString("D", CultureInfo.CreateSpecificCulture("en-US"))); // Dis

我想使用标准日期格式,在电脑的标准区域设置中显示日期、月份和年份。但是,我只能找到D,其中列出了日期、月份和年份。有没有什么方法可以让我把这一天从这一天中删除,或者用其他方法来获得我想要的产出

DateTime date1 = new DateTime(2008, 4, 10);
Console.WriteLine(date1.ToString("D", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008   
注意:我不希望使用自定义格式d MMMM yyyy,因为我希望维护订单的区域设置。

尝试以下操作:

date1.ToString("d", CultureInfo.CreateSpecificCulture("en-US"))

它将返回你想要的

您应该使用d而不是d来获得所需的输出。

如果您使用的是一种标准格式,那么显示的内容将取决于区域性-因此,即使您可以找到一些在en US中不显示星期几的内容,它也可能在其他区域性中显示


我想您可以找到区域性的DateTimeFormatInfo,找到它的LongDatePattern,然后从该格式字符串中删除任何出现的单个d。不过这会很糟糕。

您可以将此用于您的案例:

DateTimeFormatInfo myDTFI = new CultureInfo("en-US", false).DateTimeFormat;
string str = (new DateTime(2008, 4, 10)).ToString(myDTFI.LongDatePattern.Replace("dddd", ""));

许多区域性都有多个长日期模式,您可以从中选择第一个缺少星期几模式的区域性:

    static void Main(string[] args)
    {
        foreach (var cultureInfo in System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures))
        {
            string longDateWithoutDayOfWeek = null;
            foreach (var pattern in cultureInfo.DateTimeFormat.GetAllDateTimePatterns('D'))
            {
                if (!pattern.Contains("ddd"))
                {
                    longDateWithoutDayOfWeek = pattern;
                    break;
                }
            }

            bool isFallbackRequired = string.IsNullOrEmpty(longDateWithoutDayOfWeek);
            if (isFallbackRequired)
            {
                longDateWithoutDayOfWeek = cultureInfo.DateTimeFormat.ShortDatePattern;
            }
            System.Console.WriteLine("{0} - {1} {2}", cultureInfo.Name, longDateWithoutDayOfWeek, (isFallbackRequired) ? " (short)" : string.Empty);
        }
    }

或者,您也可以使用“日-月-年”模板。

预期输出是什么?d返回所需的所有组件。2009年6月15日下午1:45:30->2009年6月15日在美国,我应该清楚地回答我的问题-如果没有星期四,预期输出与D相同。。。所以应该是2008年4月10日,4月10日和2008年的顺序应该基于本地设置。我希望输出与D中的相同,没有星期四。。。所以应该是2008年4月10日,4月10日和2008年的顺序应该基于本地设置。所以,不能使用d:看起来你没有一个标准格式的字符串。您必须使用自定义格式字符串。但是,您可以将该格式字符串放入资源中,这样可以确保您的应用程序支持的不同区域性具有适当的顺序。另一种方法是Jon Skeet提出的方法-从DateTimeFormatInfo中查找格式字符串,并从中删除一天的名称。我希望输出与D中相同,没有星期四。。。所以应该是2008年4月10日,4月10日和2008年的顺序应该基于本地设置。因此,不能使用d,并且使用特定区域性对我们来说也是不可接受的:您可以使用Regex.ReplacemyDTFI.LongDatePattern、@ddddd、\s删除前导空格/逗号?,