根据时间戳计算是星期几

private SimpleDateFormat df

long date;//时间戳

df = new SimpleDateFormat("yyyy-MM-dd");

String time = df.format(date);

String[] week = time.split("-");

/*

* 以2049年10月1日(100周年国庆)为例,用蔡勒(Zeller)公式进行计算,过程如下:

* 蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

* =49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1

* =49+[12.25]+5-40+[28.6] =49+12+5-40+28 =54 (除以7余5)

* 即2049年10月1日(100周年国庆)是星期5。

*/

int c = Integer.valueOf(week[0].substring(0, 1));

int y = Integer.valueOf(week[0].substring(2, 3));

int month = Integer.valueOf(week[1]);

// int weekIndex=y+(y/4)+(c/4)-2*c+(26*(month+1)/10)+day-1;

if (month > 3 && month <= 14) {

} else {

y = y - 1;

month = month + 12;

}

int day = Integer.valueOf(week[2]);

int weekIndex = y + (y / 4) + (c / 4) - 2 * c + (26 * (month + 1) / 10) + day - 1;

if (weekIndex < 0) {

weekIndex = weekIndex * (-1);

} else {

weekIndex = weekIndex % 7;

}

String weekDate=null;

switch (Integer.valueOf(weekIndex)) {

case 1:

weekDate = mContext.getResources().getString(R.string.alarm_screen_monday);

break;

case 2:

weekDate = mContext.getResources().getString(R.string.alarm_screen_tuesday);

break;

case 3:

weekDate = mContext.getResources().getString(R.string.alarm_screen_thursday);

break;

case 4:

weekDate = mContext.getResources().getString(R.string.alarm_screen_wendesday);

break;

case 5:

weekDate = mContext.getResources().getString(R.string.alarm_screen_friday);

break;

case 6:

weekDate = mContext.getResources().getString(R.string.alarm_screen_staturday);

break;

case 7:

weekDate = mContext.getResources().getString(R.string.alarm_screen_sunday);

break;

default:

weekDate = mContext.getResources().getString(R.string.alarm_screen_monday);

break;

}

return weekDate;

猜你喜欢

转载自dzy-123.iteye.com/blog/2025441
今日推荐