Начиная с Spring Security 4.0, защита CSRF по умолчанию включена с конфигурацией XML. Если вы хотите отключить защиту CSRF, соответствующую конфигурацию XML можно увидеть ниже.
Защита CSRF по умолчанию включена с конфигурацией Java. Если вы хотите отключить CSRF, соответствующую конфигурацию Java можно увидеть ниже. См. Javadoc of csrf () для дополнительных настроек в настройке защиты CSRF.
blockquote>@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable(); } }
См. Ниже ссылку http://docs.spring.io/spring- безопасность / сайт / документы / 4.0.x / ссылка / htmlsingle / # CSRF-Configure
Полночь в начале первого дня текущего месяца определяется по формуле:
// first midnight in this month
DateMidnight first = new DateMidnight().withDayOfMonth(1);
// last midnight in this month
DateMidnight last = first.plusMonths(1).minusDays(1);
При запуске с java.util.Date используется другой конструктор DateMidnight:
// first midnight in java.util.Date's month
DateMidnight first = new DateMidnight( date ).withDayOfMonth(1);
Joda Time java doc - https://www.joda.org/joda-time/apidocs/overview-summary.html
Альтернативный способ (без учета DateMidnight) для получения первого дня месяца будет использовать:
О, я не видел, чтобы речь шла о йодатиме. Во всяком случае:
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
int min = c.getActualMinimum(Calendar.DAY_OF_MONTH);
int max = c.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = min; i <= max; i++) {
c.set(Calendar.DAY_OF_MONTH, i);
System.out.println(c.getTime());
}
Или используя общий язык:
Date min = DateUtils.truncate(date, Calendar.MONTH);
Date max = DateUtils.addMonths(min, 1);
for (Date cur = min; cur.before(max); cur = DateUtils.addDays(cur, 1)) {
System.out.println(cur);
}
DateMidnight
сейчас устарела. Вместо этого вы можете сделать:
LocalDate firstOfMonth = new LocalDate(date).withDayOfMonth(1);
LocalDate lastOfMonth = firstOfMonth.plusMonths(1).minusDays(1);
Если вы знаете часовой пояс, используйте new LocalDate(date, timeZone)
вместо этого для большей точности.
Вы также можете сделать .dayOfMonth().withMinimumValue()
вместо .withDayOfMonth(1)
РЕДАКТИРОВАТЬ:
Это даст вам 12/1/YYYY 00:00
и 12/31/YYYY 00:00
. Если вы предпочитаете, чтобы последний месяц был фактически первым в следующем месяце (поскольку вы выполняете предложение между), то удалите minusDays(1)
из вычисления lastOfMonth
Ответ от ngeek является правильным, но не дает времени для первого момента дня. Чтобы настроить время, добавьте вызов к withTimeAtStartOfDay
.
// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
org.joda.time.DateTime startOfThisMonth = new org.joda.time.DateTime().dayOfMonth().withMinimumValue().withTimeAtStartOfDay();
org.joda.time.DateTime startofNextMonth = startOfThisMonth.plusMonths( 1 ).dayOfMonth().withMinimumValue().withTimeAtStartOfDay();
System.out.println( "startOfThisMonth: " + startOfThisMonth );
System.out.println( "startofNextMonth: " + startofNextMonth );
При запуске в Сиэтле, США…
startOfThisMonth: 2013-11-01T00:00:00.000-07:00
startofNextMonth: 2013-12-01T00:00:00.000-08:00
Обратите внимание на разницу в этих двух строках вывода консоли: -7 против -8 из-за перехода на летнее время . 1119]
Как правило, всегда следует указывать часовой пояс, а не полагаться на значение по умолчанию. Опущено здесь для простоты. Нужно добавить такую строку и передать объект часового пояса конструкторам, использованным в примере выше.
// Time Zone list: http://joda-time.sourceforge.net/timezones.html (Possibly out-dated, read note on that page)
// UTC time zone (no offset) has a constant, so no need to construct: org.joda.time.DateTimeZone.UTC
org.joda.time.DateTimeZone kolkataTimeZone = org.joda.time.DateTimeZone.forID( "Asia/Kolkata" );
Вышеприведенное верно, но устарело. Библиотека Joda-Time теперь заменена фреймворком java.time, встроенным в Java 8 и более поздние версии.
LocalDate
представляет значение только для даты без времени суток и без часового пояса. Часовой пояс имеет решающее значение в определении даты. В любой данный момент дата варьируется в зависимости от зоны вокруг земного шара.
ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
Используйте один из TemporalAdjusters
, чтобы получить первый месяц.
LocalDate firstOfMonth = today.with( TemporalAdjusters.firstDayOfMonth() );
LocalDate
может генерировать ZonedDateTime
, который представляет первый момент дня.
ZonedDateTime firstMomentOfCurrentMonth = firstOfMonth.atStartOfDay( zoneId );