DateTime.ToString(“MM/dd/yyyy HH:mm:ss.fff”) resulted in something like “09/14/2013 07.20.31.371”

后端 未结 6 1962
旧巷少年郎
旧巷少年郎 2020-12-22 20:08

I have a WP8 app, which will send the current time to a web service.

I get the datetime string by calling

DateTime.ToString(\"MM/dd/yyyy HH:mm:ss.ff         


        
相关标签:
6条回答
  • 2020-12-22 20:51

    : has special meaning: it is The time separator. (Custom Date and Time Format Strings).

    Use \ to escape it:

    DateTime.ToString(@"MM/dd/yyyy HH\:mm\:ss.fff")
    

    Or use CultureInfo.InvariantCulture:

    DateTime.ToString("MM/dd/yyyy HH:mm:ss.fff", CultureInfo.InvariantCulture)
    

    I would suggest going with the second one, because / has special meaning as well (it is The date separator.), so you can have problems with that too.

    0 讨论(0)
  • 2020-12-22 20:52

    I bumped into this problem lately with Windows 10 from another direction, and found the answer from @JonSkeet very helpful in solving my problem.

    I also did som further research with a test form and found that when the the current culture was set to "no" or "nb-NO" at runtime (Thread.CurrentThread.CurrentCulture = new CultureInfo("no");), the ToString("yyyy-MM-dd HH:mm:ss") call responded differently in Windows 7 and Windows 10. It returned what I expected in Windows 7 and HH.mm.ss in Windows 10!

    I think this is a bit scary! Since I believed that a culture was a culture in any Windows version at least.

    0 讨论(0)
  • 2020-12-22 20:55

    Is it because some culture format issue?

    Yes. Your user must be in a culture where the time separator is a dot. Both ":" and "/" are interpreted in a culture-sensitive way in custom date and time formats.

    How can I make sure the result string is delimited by colon instead of dot?

    I'd suggest specifying CultureInfo.InvariantCulture:

    string text = dateTime.ToString("MM/dd/yyyy HH:mm:ss.fff",
                                    CultureInfo.InvariantCulture);
    

    Alternatively, you could just quote the time and date separators:

    string text = dateTime.ToString("MM'/'dd'/'yyyy HH':'mm':'ss.fff");
    

    ... but that will give you "interesting" results that you probably don't expect if you get users running in a culture where the default calendar system isn't the Gregorian calendar. For example, take the following code:

    using System;
    using System.Globalization;
    using System.Threading;
    
    class Test
    {
        static void Main()        
        {
            DateTime now = DateTime.Now;
            CultureInfo culture = new CultureInfo("ar-SA"); // Saudi Arabia
            Thread.CurrentThread.CurrentCulture = culture;
            Console.WriteLine(now.ToString("yyyy-MM-ddTHH:mm:ss.fff"));
        }
    } 
    

    That produces output (on September 18th 2013) of:

    11/12/1434 15:04:31.750
    

    My guess is that your web service would be surprised by that!

    I'd actually suggest not only using the invariant culture, but also changing to an ISO-8601 date format:

    string text = dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
    

    This is a more globally-accepted format - it's also sortable, and makes the month and day order obvious. (Whereas 06/07/2013 could be interpreted as June 7th or July 6th depending on the reader's culture.)

    0 讨论(0)
  • 2020-12-22 20:59

    You can use String.Format:

    DateTime d = DateTime.Now;
    string str = String.Format("{0:00}/{1:00}/{2:0000} {3:00}:{4:00}:{5:00}.{6:000}", d.Month, d.Day, d.Year, d.Hour, d.Minute, d.Second, d.Millisecond);
    // I got this result: "02/23/2015 16:42:38.234"
    
    0 讨论(0)
  • 2020-12-22 21:04

    Convert Date To String

    Use name Space

    using System.Globalization;
    

    Code

    string date = DateTime.ParseExact(datetext.Text, "dd-MM-yyyy", CultureInfo.InstalledUICulture).ToString("yyyy-MM-dd");
    
    0 讨论(0)
  • 2020-12-22 21:11

    You can use InvariantCulture because your user must be in a culture that uses a dot instead of a colon:

    DateTime.ToString("MM/dd/yyyy HH:mm:ss.fff", CultureInfo.InvariantCulture);
    
    0 讨论(0)
提交回复
热议问题