开发者

C# datetime format that includes date/month/year and not day

I want to use a standard date format that displays date, month and year in the standard regional settings of the pc. However I could only find "D" which lists day along with Date-Month开发者_C百科-Year. Is there any way I can remove the day from it or any other way to get my desired output?

DateTime date1 = new DateTime(2008, 4, 10);
Console.WriteLine(date1.ToString("D", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008   

Note: I don't want to be using custom format (d MMMM yyyy) as I want the regional settings of the order to be maintained.


you can use this for your case:

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


If you're using one of the standard formats, then what gets displayed is going to depend on the culture anyway - so even if you could find something which doesn't display the day of week in en-US, it may still display it in other cultures.

I suppose you could find the DateTimeFormatInfo for the culture, find its LongDatePattern and then remove any occurrence of a single "d" from that format string. It would be pretty nasty though.


try this:

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

It will return what you want!!


You should use "d" instead of "D" to get the desired output.


Many cultures have multiple long date patterns and you can select from them the first one which lacks a day of the week pattern:

    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);
        }
    }

Alternatively, you can use the Windows.Globalization.DateTimeFormatting.DateTimeFormatter with template of "day month year".

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜