Преобразование времени даты для отображения миллисекунд в C # - PullRequest
4 голосов
/ 27 июля 2011

Я хочу показать миллисекунды, но ToString показывает миллисекунды как 00000.

Я предоставляю код ниже, с выводом на каждом шаге.

  1. String currentDateTime = DateTime.Now.ToString("G");

    Выход - 27.07.2011 15:05:31

  2. System.DateTime dateTime = System.DateTime.Parse(currentDateTime);

    Выход - 27.07.201115:05:31

  3. String dateTimeStr = dateTime.ToString("hh.mm.ss.ffffff", "en-US");

Выход - 03.05.32.000000

Я хочу показать выводс миллисекундами, например, 03.05.32.33456

Если я использовал ParseExact вместо Parse, я получаю исключение.Я знаю, что могу использовать TryParseExact, но это решение может не подойти, поскольку мне нужно общее решение этой проблемы.

Может ли кто-нибудь помочь мне в этом.

Заранее спасибо.Sujay

Ответы [ 3 ]

5 голосов
/ 27 июля 2011

Не уверен, почему вы переходите от DateTime -> string -> DateTime. Это должно отображать миллисекунды

DateTime dt = DateTime.Now;
dt.ToString("hh:mm:ss.fff") 

Пожалуйста, отредактируйте сообщение, если вы не смотрите в этих строках дополнительную информацию

4 голосов
/ 27 июля 2011

Используя тот же объект dateTime, который вы ранее построили из строки («27.07.2011 15:05:31 PM» без миллисекунд), вы теряете миллисекунды.

Если бы вы преобразовали Now в строку напрямую, вы не потеряли бы миллисекунды:

String dateTimeStr = DateTime.Now.ToString("hh.mm.ss.ffffff", "en-US");
3 голосов
/ 27 июля 2011

В вашем коде вы сначала сериализуете DateTime в строку, используя стандартный формат «G», который не имеет миллисекунд.Так что вы получите 000000 позже, когда проанализируете эту строку:

        String currentDateTime = DateTime.Now.ToString("G");
        Console.WriteLine(currentDateTime);

        System.DateTime dateTime = System.DateTime.Parse(currentDateTime);

        Console.WriteLine(dateTime.ToString("hh.mm.ss.ffffff"));
...