Форматирование DateTimeOffset

#c# #asp.net-mvc-3

#c# #asp.net-mvc-3

Вопрос:

Я хочу получить форматированную строку из типа DateTimeOffset, которая должна выглядеть следующим образом: 20. Июль 2009. (с точками), я пробовал с этим кодом:

 Birthday.ToString("dd. MMMM yyyy.")
 

но я получаю только пустую строку.

РЕДАКТИРОВАТЬ: я использую это в ASP.NET Проект MVC3 C # с Razor. Вот полная строка:

 @Html.Label(Model.Birthday.ToString("dd. MMMM yyyy."))
 

Ответ №1:

Приведенный вами код должен быть в порядке — я подозреваю, что вы на самом деле не присвоили возвращаемое значение чему-либо. Например:

 using System;

class Test
{
    static void Main()
    {
        DateTimeOffset dto = new DateTimeOffset(2009, 7, 20,
                                                0, 0, 0, TimeSpan.Zero);
        string text = dto.ToString("dd. MMMM yyyy.");
        Console.WriteLine(text); // Prints 20. July 2009. on my machine
    }
}
 

(Очевидно, вы также можете указать используемый язык.)

Комментарии:

1. Извините, но I suspect you haven't actually assigned the return value to anything не могли бы вы пояснить, пожалуйста, что вы подразумеваете здесь под return value

2. @HarshBaid: я имел в виду, что простой вызов метода ничего не делает. Теперь, когда вы показали сторону MVC, мы должны быть в состоянии разобраться. Мне непонятно, почему это не работает, но я не специалист по MVC. Если вы просто измените его на @Html.Label("20. July 2009.") то, что произойдет? Я подозреваю, что вы получите тот же результат.

3. okkiez. У меня немного низкая репутация на английском, поэтому я спросил .. : D

Ответ №2:

Попробуйте с этим:

 Birthday.ToString("dd'.' MMMM yyyy'.'")
 

Я попробовал этот код на своем ПК (VS2010), и он работает так, как ожидалось:

 DateTime Birthday = new DateTime(2009, 7, 20);
string s = Birthday.ToString("dd'.' MMMM yyyy'.'");
DateTimeOffset Birthday1 = new DateTimeOffset(Birthday);
string s1 = Birthday1.ToString("dd'.' MMMM yyyy'.'");
 

И s, и s1 сообщаются правильно.

Комментарии:

1. Здесь нет необходимости указывать периоды. Смотрите мой ответ.

2. @JonSkeet: да, вы правы… Я просто использовал его, чтобы убедиться, что какой-либо пользовательский разделитель дат на пользовательском ПК не может привести к какой-либо ошибке. В любом случае, вы всегда правы 😉

3. @JonSkeet: даже потому, что пользователь сказал нам, что он попробовал этот синтаксис и не сработал … поэтому я попробовал что-то другое…