#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: даже потому, что пользователь сказал нам, что он попробовал этот синтаксис и не сработал … поэтому я попробовал что-то другое…