Используя Microsoft.Reactive, вы можете сделать это довольно просто, и вы будете проходить только один раз по источнику.
IEnumerable<string> source = new List<string>{"1", "2", "3", "4", "5", "6"};
IEnumerable<IEnumerable<string>> splited = source.ToObservable().Buffer(3).ToEnumerable();
В этом сообщении в блоге рассказывается о встроенной обработке часовых поясов в Rails 2.1+:
http://mad.ly/2008/04/09/rails-21-time-zone-support -an-overview /
Суть в том, что Rails будет хранить все записи в БД в формате UTC, а затем преобразовывать их в часовой пояс пользователя для отображения. В этом есть смысл: сохранить все данные в нейтральной форме, а затем преобразовать их в желаемую форму в последнюю минуту.
Перед установкой даты необходимо установить часовой пояс в объекте данных.
Основываясь на вашем ответе на мой комментарий, я бы сказал, что просто сохраните date на основе времени локального сервера, затем используйте JavaScript Date :: toLocaleString (), чтобы преобразовать его в местный часовой пояс. Пару лет назад я написал об этом статью, которую вы можете найти здесь .
JS статьи был написан на MooTools, но с тех пор я переписал его с помощью jQuery, поэтому покажу этот код.
Важные части:
При рендеринге в HTML используйте миллисекунды, прошедшие с эпохи.
<span class="dt"><!-- <%= blah.created_at_epoch_ms %> --><%= blah.created_at %></span>
Для чего требуется метод в вашей модели, определенный следующим образом:
def created_at_epoch_ms
self.created_at.to_i * 1000
end
JS для преобразования дат:
$(document).ready(function(){
$('span.dt').each(function(){
var date = new Date();
date.setTime(this.firstChild.data);
$(this).parent().text(date.toLocaleString());
});
});
Это должно преобразовать строку в местное время пользователя, и волшебство произойдет в toLocaleString (). Единственный браузер, о котором я слышал, не Я использую Safari 2.0, что не должно вызывать особых проблем, поскольку я думаю, что большинство пользователей перешли на него.
Я использую этот метод на моем сайте , и если вы посмотрите на исходный код код на страницу, вы можете увидеть, что он делает. Фактический код, отправляемый в браузер, выглядит так:
<!-- 1243484521000 -->2009-05-28 04:22:01 UTC
Который конвертируется в моем браузере (центральное время) в
Wednesday, May 27, 2009 11:22:01 PM
. Если у них включен JS, он принимает значение узла комментария, преобразует его и заменяет вся строка (включая время UTC) с местным временем. Если JS отключен, они будут видеть время так, как его видит сервер.
s, отправленные в браузер, выглядят так:<!-- 1243484521000 -->2009-05-28 04:22:01 UTC
Что преобразуется в моем браузере (центральное время) в
Wednesday, May 27, 2009 11:22:01 PM
. Если у них включен JS, он примет значение узла комментария, преобразует его и заменит всю строку (включая время UTC) с местным временем. Если JS отключен, они будут видеть время так, как его видит сервер.
s, отправленные в браузер, выглядят так:<!-- 1243484521000 -->2009-05-28 04:22:01 UTC
Что преобразуется в моем браузере (центральное время) в
Wednesday, May 27, 2009 11:22:01 PM
. Если у них включен JS, он примет значение узла комментария, преобразует его и заменит всю строку (включая время UTC) с местным временем. Если JS отключен, они будут видеть время так, как его видит сервер.