2011-07-07 58 views
3

我想知道如何計算當前周的開始和結束日期? 我發現這不是在標準的Android庫或類似date4j的庫中實現的。在Android上獲取開始和結束的時間

如果有一些簡單明瞭的方法來實現這一點?或者我必須再次實施自行車?

謝謝。

+0

可能重複(http://stackoverflow.com/questions/10451784/getting-the-dates-of-the-current-week- in-android) –

回答

4

它不需要太多代碼就可以用date4j來做到這一點。 的計算一週的第一天例如:

private void firstDayOfThisWeek(){ 
    DateTime today = DateTime.today(TimeZone.getDefault()); 
    DateTime firstDayThisWeek = today; //start value 
    int todaysWeekday = today.getWeekDay(); 
    int SUNDAY = 1; 
    if(todaysWeekday > SUNDAY){ 
     int numDaysFromSunday = todaysWeekday - SUNDAY; 
     firstDayThisWeek = today.minusDays(numDaysFromSunday); 
    } 
    System.out.println("The first day of this week is : " + firstDayThisWeek); 
    } 

上面遵循慣例,週日是一週的開始。在某些司法管轄區,該慣例不適用,因此您需要更改此類案例的代碼。

1

使用Joda-Time 2.3庫這種日期時間工作通常更容易。

採取從this answer到類似的問題。

LocalDate now = new LocalDate(); 
System.out.println(now.withDayOfWeek(DateTimeConstants.MONDAY)); 
System.out.println(now.withDayOfWeek(DateTimeConstants.SUNDAY)); 

您可以撥打isBefore/isAfterminusWeeks/plusWeeks讓過去/未來價值。

1

這個工作對我來說...

Calendar cal = Calendar.getInstance(); 
int year = cal.get(Calendar.YEAR); 
cal.set(Calendar.DAY_OF_WEEK, cal.MONDAY); 
String firstWkDay = String.valueOf(cal.getTime()); 
//cal.set(Calendar.DAY_OF_WEEK, cal.SUNDAY); 
cal.add(Calendar.DAY_OF_WEEK, 6); 
String lastWkDay = String.valueOf(cal.getTime()); 

在這一週的最後一天,你可以使用cal.set(Calendar.DAY_OF_WEEK, cal.SUNDAY);但它在某些設備上

+0

「但它在某些設備上返回上一個星期日」,你能解釋爲什麼嗎?因爲我認爲我的設備有這個問題。 –

+0

簡短的回答是... Android碎片。 嘗試上面寫的代碼片段 – aphoe

0

返回之前的星期天這是我一直在使用中獲得什麼日期:獲取當前一週的日期中的Android]的

Calendar c = Calendar.getInstance(); 
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
c.setFirstDayOfWeek(Calendar.MONDAY); 

startOfWeek = c.getTime(); 
相關問題