2015-06-11 19 views

Odpowiedz

10

Jednym ze sposobów byłoby ręcznie ustawić dzień pierwszego miesiąca:

import static java.time.ZoneOffset.UTC; 
import static java.time.temporal.ChronoUnit.DAYS; 

ZonedDateTime truncatedToMonth = ZonedDateTime.now(UTC).truncatedTo(DAYS).withDayOfMonth(1); 
System.out.println(truncatedToMonth); //prints 2015-06-01T00:00Z 
long millis = truncatedToMonth.toInstant().toEpochMilli(); 
System.out.println(millis); // prints 1433116800000 

lub alternatywną z LocalDate, który może czystsze:

LocalDate firstOfMonth = LocalDate.now(UTC).withDayOfMonth(1); 
long millis = firstOfMonth.atStartOfDay(UTC).toEpochSecond() * 1000; 
//or 
long millis = firstOfMonth.atStartOfDay(UTC).toInstant().toEpochMilli(); 
1

Dla prosty sposób aby to zrobić:

Calendar cal = new GregorianCalendar(); 
System.out.println(cal.getTime()); 

cal.set(Calendar.DAY_OF_MONTH,1); 
System.out.println(cal.getTime()); 

cal.set(Calendar.HOUR_OF_DAY,0); 
System.out.println(cal.getTime()); 

cal.set(Calendar.MINUTE,0); 
System.out.println(cal.getTime()); 

cal.set(Calendar.SECOND,0); 
System.out.println(cal.getTime()); 

cal.set(Calendar.MILLISECOND,0); 
System.out.println(cal.getTime()); 

wyjście jest:

Thu Jun 11 05:36:17 EDT 2015 
Mon Jun 01 05:36:17 EDT 2015 
Mon Jun 01 00:36:17 EDT 2015 
Mon Jun 01 00:00:17 EDT 2015 
Mon Jun 01 00:00:00 EDT 2015 
Mon Jun 01 00:00:00 EDT 2015 
+0

zredagowałem odpowiednio moją odpowiedź – MozenRath

10

Do tego służą urządzenia java.time.temporal.TemporalAdjusters.

date.with(TemporalAdjusters.firstDayOfMonth())).truncatedTo(ChronoUnit.DAYS); 
Powiązane problemy