Я превращаю комментарий Тунаки в ответ.
tl;dr
ChronoUnit.WEEKS.between (
LocalDate.ofEpochDay ( 0 ) ,
LocalDate.now( ZoneOffset.UTC )
)
LocalDate
Класс LocalDate
представляет значение без времени суток и без часового пояса.
Часовой пояс имеет решающее значение при определении даты. В любой момент дата варьируется по всему земному шару в зависимости от зоны. Например, через несколько минут после полуночи в Париже, Франция — это новый день, а в Монреале, Квебеке — все еще «вчера».
Здесь мы используем UTC в качестве часового пояса для сегодняшней даты в соответствии с эпохой, определенной в UTC.
LocalDate today = LocalDate.now( ZoneOffset.UTC );
ChronoUnit
Класс ChronoUnit
имеет методы подсчета прошедшего количества лет, месяцев, недель и т.п. Для недель это просто берет количество дней и делится на 7. Таким образом, первый день недели не имеет значения. Не уверен, что это соответствует вашим потребностям или нет, поскольку вопрос расплывчатый.
LocalDate today = LocalDate.now ( ZoneOffset.UTC ); // Using UTC to match the definition of the Java epoch.
LocalDate epoch = LocalDate.ofEpochDay ( 0 );
long weeks = ChronoUnit.WEEKS.between ( epoch , today );
Дамп на консоль.
System.out.println ( "epoch: " + epoch + " | today in UTC: " + today + " | weeks: " + weeks );
эпоха: 1970-01-01 | сегодня в UTC: 2016-08-29 | недели: 2434
Вы можете настроить дату начала на определенный день недели, если это имеет смысл для ваших нужд. Я не уверен, подходит ли это, потому что вопрос не ясен.
LocalDate epoch = LocalDate.ofEpochDay ( 0 );
LocalDate start = epoch.with ( TemporalAdjusters.nextOrSame ( DayOfWeek.SUNDAY ) ); // Get the first Sunday that *is* the epoch or *follows* the epoch.
long weeks = ChronoUnit.WEEKS.between ( start , today );
О java.time
java.time встроена в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и SimpleDateFormat
.
Проект Joda-Time, теперь в режим обслуживания, советует перейти на java.time.
Чтобы узнать больше, см. Учебное пособие по Oracle. И поищите множество примеров и пояснений в Stack Overflow. Спецификация: JSR 310.
Вы можете обмениваться объектами java.time непосредственно с вашей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. . Этот проект является испытательным полигоном для возможных дополнений к java.time в будущем. Здесь вы можете найти несколько полезных классов, таких как Interval
a>, YearWeek
, YearQuarter
и подробнее.
person
Basil Bourque
schedule
29.08.2016
ChronoUnit.WEEKS.between(LocalDate.ofEpochDay(0), localDate)
? - person Tunaki   schedule 17.08.2016