2015-06-11 16 views

risposta

10

Un modo potrebbe essere quello di impostare manualmente il giorno per il primo giorno del mese:

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 

O in alternativa con un LocalDate, che è forse più pulita:

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

Per un modo semplice farlo:

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()); 

Il risultato è:

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

modificato la mia risposta di conseguenza – MozenRath

10

Questo è ciò che è java.time.temporal.TemporalAdjusters.

date.with(TemporalAdjusters.firstDayOfMonth())).truncatedTo(ChronoUnit.DAYS); 
Problemi correlati