2012-02-14 3 views
0

Я хочу рассчитать дату в прошлую субботу. Напр. Если я буду запускать программу сегодня, она должна дать мне дату 11 февраля.Как получить дату последней/предыдущей субботы в данный момент времени

Может ли часовой пояс повлиять на этот расчет, другая дата в тот же день в другом часовом поясе?

ответ

3

Использование joda-time (который я советую вам использовать):

DateTime now = new DateTime(DateTimeZone.forID("UTC")); 
DateTime saturday = now.withDayOfWeek(6); 
if (saturday.isAfter(now)) { 
    saturday = saturday .minusWeeks(1); 
} 
System.out.println(saturday); 
+0

6 здесь для субботы? Библиотека Joda выставляет ее как Enum/Constant, как Calendar.SATURDAY. Также будет ли это работать в первую неделю любого года, так как вычитание одной недели приведет вас к предыдущему году. – RandomQuestion

+0

Да, это перенесет вас в предыдущий год. Я не был уверен, что 6 в субботу, но, похоже, это так. – Bozho

2

до тех пор, пока вы ссылаетесь на ту же субботу, она будет в ту же дату в любой точке мира.
термин «последний Субботы» может быть неоднозначным, хотя:

, если я нахожусь в Японии и его (1:00 утра) в субботу, то для меня «последней субботы» начал только час назад.
для кого-то в Англии все еще пятница, и его «последняя суббота» началась (и закончилась) около недели назад.

В этом случае мы можем ссылаться на «прошлую субботу» на другую дату, но, разумеется, мы фактически ссылаемся на разные дни.

+2

Но "последний" Субботы могут быть разными. Предположим, что в одном часовом поясе уже уже суббота, а с другой - еще пятница - в этом случае последняя суббота будет недели раздельно (в зависимости от вашего определения последнего - в противном случае это суббота/воскресенье) – Voo

+1

@ Voo Я просто писал это а вы отправили комментарий :) – yurib

Смежные вопросы