2015-06-11 20 views

Trả lời

10

Một cách sẽ được thiết lập thủ công ngày để là người đầu tiên của tháng:

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 

Hoặc một sự thay thế với một LocalDate, đó là có thể sạch hơn:

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

Đối với một cách đơn giản để làm điều đó:

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

Đầu ra là:

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

đã chỉnh sửa câu trả lời của tôi cho phù hợp – MozenRath

10

Đây là những gì java.time.temporal.TemporalAdjusters dành cho.

date.with(TemporalAdjusters.firstDayOfMonth())).truncatedTo(ChronoUnit.DAYS); 
Các vấn đề liên quan