Проблема при объединении форматированной строки - PullRequest
1 голос
/ 22 марта 2011
 currTime = DateTime.Now.ToString("u");

Приведенный выше код сначала форматирует время до yyyy-mm-dd hh-mm-ss (буквенно-цифровой).

Я хотел удалить буквенно-цифровой символ, поэтому использовал

 currTime = currTime.Substring(0, currTime.Length - 1);

Iзатем добавили «.000» в конец, используя

 currTime = currTime + ".000";

. Однако это удаляет форматирование и при отображении показывает стандартный формат dd-mm-yyyy.Поэтому мой вопрос состоит из двух частей:

Итак ...

Как мне отформатировать DateTime.Now в yyyy-mm-dd hh:mm:ss без буквенно-цифрового символа?

И какдобавить ".000" без потери моего формата?

Ответы [ 3 ]

6 голосов
/ 22 марта 2011

DateTime.Now.ToString(@"yyyy\-MM\-dd hh\-mm\-ss.000") хотя вы уверены, что не хотите DateTime.Now.ToString(@"yyyy\-MM\-dd hh\:mm\:ss.000")?

1 голос
/ 22 марта 2011

Боюсь, я просто не верю тебе. Простая конкатенация строк не начнет возиться с остальной строкой.

Вот короткий, но полный пример, показывающий, что не меняется:

using System;

class Test
{
    static void Main()
    {
        string currTime = DateTime.Now.ToString("u");
        currTime = currTime.Substring(0, currTime.Length - 1);
        currTime = currTime + ".000";
        Console.WriteLine(currTime);
    }
}    

Выход:

2011-03-22 12:28:39.000

Я не думаю, что это лучший способ придумать этот формат, но он определенно не ведет себя так, как вы утверждаете. Можете ли вы придумать похожую короткую, но законченную программу, которая поддерживает ваше утверждение, что «это затем удаляет форматирование и отображает его как стандартный формат дд-мм-гггг»? Я предполагаю, что вы не видите того, что вы на самом деле думаете вы видите, но без полной программы трудно сказать, что на самом деле происходит.

0 голосов
/ 22 марта 2011

Нечто подобное должно сработать, с небольшим изменением, которое добавляет фактическую долю секунды, а не жестко запрограммированную .000:

var result = string.Format("{0:yyyy-MM-dd hh:mm:ss.fff}", DateTime.Now);
...