DateTime ToString(“dd/MM/yyyy”) returns dd.MM.yyyy

前端 未结 4 2036
刺人心
刺人心 2020-12-25 08:12

I have also tried shielding the \'/\' symbol in the formatting string, but it didn\'t quite work. My final goal is to get the date with the \'/\' symbols as separators. I g

相关标签:
4条回答
  • 2020-12-25 08:31

    This works (note the InvariantCulture):

    DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)
    

    If a CultureInfo is not specified, the CurrentCulture will be used. If this is a culture that doesn't use slashes as separators in dates it is replaced by whatever the actual culture date separator is.

    0 讨论(0)
  • 2020-12-25 08:33
    string s = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
    
    0 讨论(0)
  • 2020-12-25 08:40

    This is because of the way ToString works by default, in accordance with the current culture:

    This method uses formatting information derived from the current culture.

    So, override that:

    string date = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
    
    0 讨论(0)
  • 2020-12-25 08:54

    The / character in date/time format strings stands for "whatever the date separator of the format provider is". Since you do not supply a format provider Thread.CurrentCulture is used, and in your case the current culture uses . as the date separator.

    If you want to use a literal slash, place it inside single quotes:

    dateTime.ToString("dd'/'MM'/'yyyy");
    

    Alternatively, you could specify a format provider where the date separator is /:

    dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
    

    All of the above is documented on MSDN.

    See the difference in a live example.

    0 讨论(0)
提交回复
热议问题