2017-01-11 8 views
0

В GWT/Java как мы можем получить первый день с первым часом, минутой и секундами и последним днем ​​с последним часом, в последнюю минуту и ​​последнюю секунду текущей недели?Получить даты с GWT/Java?

А как форматировать данные таким образом:

2017-01-08T04: 00: 00.000Z

ответ

0

Использовать устаревшие методы объекта Date.

Использование DateTimeFormat

0

Так все, что вам нужно сделать, это простая математика трюк с датой выглядит код (предположим, что первый день недели понедельник в вашем Locale)

Date myCurrentDate = new Date(); 

    long timeInFirstWeek = (myCurrentDate.getTime() - 345600000 + 3600000) % 604800000; 
    Date firstDateOfWeek = new Date(myCurrentDate.getTime() - timeInFirstWeek - 3600000); 
    Date lastDateOfWeek = new Date(firstDateOfWeek.getTime() + 604800000 - 1); 

    GWT.log(DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(lastDateOfWeek)); 
    GWT.log(DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(firstDateOfWeek)); 

Объяснение: Чтобы узнать, какой день недели у нас есть, нам нужна константа. В Date Time только одна константа равна 0 (setTime (0)) Но это 1 января 1970 четверг 01:00. Итак, давайте вернемся к времени до 70 '. Для этого мы делим «наше время сейчас» на время «одной недели», что составляет 604800000 миллисекунд. Поскольку мы используем по модулю, мы ожидаем, что в первую неделю 1970-х годов. Но в четверг и в 01:00 есть еще проблема. Как это решить? Мы вычитаем из нашего текущего времени четыре дня = 345600000 миллисекунд и добавим этот час 3600000. Теперь мы приземляемся в понедельник 00:00 1970! Теперь у нас есть переменная timeInFirstWeek, которая указывает время, которое прошло только в одну первую неделю 1970 года. Я также говорю, что мы удаляем все остальные недели со времени, и у нас есть только одна неделя.

Итак, теперь вы, вероятно, догадываетесь, что все, что нам нужно сделать, это вычесть timeInFirstWeek с текущей даты, чтобы получить первую секунду недели. Чтобы получить последнюю вторую неделю, нам нужно добавить одну неделю = 604800000, а затем вычесть одну миллисекунду.

С форматированием, указанным как @Knarf, вы можете использовать DateTimeFormat. Кроме того, она была удалена временная от устаревания в GWT 2.8, как код говорит

// Temporarily remove deprecation to keep from breaking teams that don't allow 
// deprecated references. 
// @Deprecated 
0

Я думаю getStartingDayOfWeek() из com.google.gwt.user.datepicker.client.CalendarUtil класс будет полезен здесь.

После получения первой недели дня мы можем установить час, минуты и секунды, чтобы сбросить дату для начала.

В течение последней недели мы можем добавить некоторые постоянные значения.