Вы не можете полагаться на бесступенчатый метод DateTimeOffset.ToString()
как культурно-агностик. Я бы предложил использовать спецификатор формата «туда и обратно» ("O"
или "o"
), чтобы форматировать дату однозначно по стандарту ISO 8601 (чтобы он правильно обрабатывался во всех культурах), сохраняя информацию о часовом поясе.
Из MSDN:
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1,
TimeZoneInfo.Local.GetUtcOffset(date1));
Console.WriteLine(dateOffset.ToString("o"));
// Displays 2008-04-10T06:30:00.0000000-07:00
timeago сайт, как представляется, указывают, что он поддерживает ISO 8601
Edit: Формат "o"
спецификатор эквивалентно следующий пользовательский формат строки:
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz"
Если вы хотите ограничить свою точность миллисекундой НСР, вы можете настроить его так:
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1, new TimeSpan(-7, 0, 0));
Console.WriteLine(dateOffset.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz"));
// Displays 2008-04-10T06:30:00.000-07:00
Возможно ли использовать http://msdn.microsoft.com/en-us/library/bb335841.aspx для получения строки, которую распознает jQuery.timeago? – glarkou
jQuery.timeago использует javascript new Date() – Kay
Если вы собираетесь использовать timeago на нем, почему вы выводите дату в этом формате? Вы могли бы просто вывести его в ожидаемом формате timeago ... В противном случае вы могли бы скрыть дату в правильном формате в атрибуте данных, jQuery получить к ней доступ и манипулировать им с помощью timeago –