Java获取一年有多少周、某周的第一天和最后一天,当前时间所在当年的实际周数
生活随笔
收集整理的這篇文章主要介紹了
Java获取一年有多少周、某周的第一天和最后一天,当前时间所在当年的实际周数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar;
public class DateTest {
// 獲取當(dāng)前時(shí)間所在年的周數(shù) public static int getWeekOfYear(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setMinimalDaysInFirstWeek(7); c.setTime(date);
return c.get(Calendar.WEEK_OF_YEAR); }
// 獲取當(dāng)前時(shí)間所在年的最大周數(shù) public static int getMaxWeekNumOfYear(int year) { Calendar c = new GregorianCalendar(); c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
return getWeekOfYear(c.getTime()); }
// 獲取某年的第幾周的開始日期 public static Date getFirstDayOfWeek(int year, int week) { Calendar c = new GregorianCalendar(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, Calendar.JANUARY); c.set(Calendar.DATE, 1);
Calendar cal = (GregorianCalendar) c.clone(); cal.add(Calendar.DATE, week * 7);
return getFirstDayOfWeek(cal.getTime()); }
// 獲取某年的第幾周的結(jié)束日期 public static Date getLastDayOfWeek(int year, int week) { Calendar c = new GregorianCalendar(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, Calendar.JANUARY); c.set(Calendar.DATE, 1);
Calendar cal = (GregorianCalendar) c.clone(); cal.add(Calendar.DATE, week * 7);
return getLastDayOfWeek(cal.getTime()); }
// 獲取當(dāng)前時(shí)間所在周的開始日期 public static Date getFirstDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday return c.getTime(); }
// 獲取當(dāng)前時(shí)間所在周的結(jié)束日期 public static Date getLastDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday return c.getTime(); }
public static void main(String[] args) { int year = 2011; int week = 1;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date today = new Date(); Calendar c = new GregorianCalendar(); c.setTime(today);
System.out.println("current date = " + sdf.format(today)); System.out.println("getWeekOfYear = " + getWeekOfYear(today)); System.out .println("getMaxWeekNumOfYear = " + getMaxWeekNumOfYear(year)); System.out.println("getFirstDayOfWeek = " + sdf.format(getFirstDayOfWeek(year, week))); System.out.println("getLastDayOfWeek = " + sdf.format(getLastDayOfWeek(year, week))); System.out.println("getFirstDayOfWeek = " + sdf.format(getFirstDayOfWeek(today))); System.out.println("getLastDayOfWeek = " + sdf.format(getLastDayOfWeek(today))); System.out.println("---------------------------------------------------");
/*下邊是解決年初第一周的前幾天有可能也屬于上一年的最后的一周的后幾天,導(dǎo)致當(dāng)前時(shí)間獲取得到的所在周數(shù)和實(shí)際不符的問(wèn)題*/
//獲取當(dāng)前年已經(jīng)過(guò)的周數(shù) c.setFirstDayOfWeek(Calendar.MONDAY); c.setMinimalDaysInFirstWeek(7); c.setTime(today);
//獲取當(dāng)前年的當(dāng)前月份 int month = c.get(Calendar.MONTH) + 1; int year2 = c.get(Calendar.YEAR); int weekofYear1 = c.get(Calendar.WEEK_OF_YEAR); System.out.println(weekofYear1); String yearStr = String.valueOf(year2); int yearint = Integer.parseInt(yearStr.substring(yearStr.length() - 1, yearStr.length())); System.out.println(yearint); if(weekofYear1 > 51 && month == 1){ if(weekofYear1 > 51){ weekofYear1 = 1; } } //當(dāng)前周數(shù) * 7 是否小于 當(dāng)日處于一年中的第幾天 if(weekofYear1 * 7 < c.get(Calendar.DAY_OF_YEAR)){ weekofYear1++; } System.out.println(weekofYear1); System.out.println("一年中第多少天"+c.get(Calendar.DAY_OF_YEAR)); } }
總結(jié)
以上是生活随笔為你收集整理的Java获取一年有多少周、某周的第一天和最后一天,当前时间所在当年的实际周数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 雅虎34条军规(网页优化)
- 下一篇: 3个极品在线PDF转换成WORD服务网站