java怎么统计出当年有多少个周,并列出那些

java怎么统计出当年有多少个周,并列出那些,第1张

计算一年有多少个周的思路:首先,每年至少有52个周,至多有53个周,取决于周一是在哪年(也可以定位周日,这个是由需求决定的),以下是详细代码,其中判断哪一天决定了当周是属于哪一年的逻辑是写在getYearWeekEndDay中。

/

返回指定年度的所有周。List中包含的是String[2]对象<br>

string[0]本周的开始日期,string[1]是本周的结束日期。<br>

日期的格式为yyyy-MM-dd。<br>

每年的第一个周,必须包含星期一且是完整的七天。<br>

例如:2009年的第一个周开始日期为2009-01-05,结束日期为2009-01-11。 <br>

星期一在哪一年,那么包含这个星期的周就是哪一年的周。<br>

例如:2008-12-29是星期一,2009-01-04是星期日,哪么这个周就是2008年度的最后一个周。<br>

@param year 格式 yyyy ,必须大于1900年度 小于9999年

@return

/

public static List<String[]> getWeeksByYear(final int year){

if(year<1900 || year >9999){

throw new NullPointerException("年度必须大于等于1900年小于等于9999年");

}

//实现思路,首先计算当年有多少个周,然后找到每个周的开始日期和结束日期

// Calendar calendar = new GregorianCalendar();

// // 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。

// calendarsetFirstDayOfWeek(CalendarMONDAY); //设置每周的第一天为星期一

// calendarset(CalendarDAY_OF_WEEK, CalendarMONDAY); //每周从周一开始

// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。

// calendarsetMinimalDaysInFirstWeek(7); //设置每周最少为7天

// calendarset(CalendarYEAR, year); // 设置年度为指定的年

// //首先计算当年有多少个周,每年都至少有52个周,个别年度有53个周

int weeks = getWeekNumByYear(year);

// Systemoutprintln(year+"共有"+weeks+"个周");

List<String[]> result = new ArrayList<String[]>(weeks);

for(int i=1;i<=weeks;i++){

String[] tempWeek = new String[2];

tempWeek[0] = getYearWeekFirstDay(year,i);

tempWeek[1] = getYearWeekEndDay (year,i);

//或者使用下面的代码,不过发现效率更低

// tempWeek[0] = getDateAdd(firstWeekDay,(i-1)7+0);

// tempWeek[1] = getDateAdd(firstWeekDay,(i-1)7+6);

resultadd(tempWeek);

// Systemoutprintln(i+"="+tempWeek[0]+"_"+tempWeek[1]);

}

    /

      判断当前日期是星期几<br>

      <br>

      @param pTime 修要判断的时间<br>

      @return dayForWeek 判断结果<br>

      @Exception 发生异常<br>

     /

 public static int dayForWeek(String pTime) throws Exception {

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

  Calendar c = CalendargetInstance();

  csetTime(formatparse(pTime));

  int dayForWeek = 0;

  if(cget(CalendarDAY_OF_WEEK) == 1){

   dayForWeek = 7;

  }else{

   dayForWeek = cget(CalendarDAY_OF_WEEK) - 1;

  }

  return dayForWeek;

 }

public static void main(String[] agrs) {

String newtime="2013-7-21";

Systemoutprint(testDate(newtime));

}

public static String testDate(String newtime) {

String dayNames[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

Calendar c = CalendargetInstance();// 获得一个日历的实例

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

try {

csetTime(sdfparse(newtime));

} catch (ParseException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

return dayNames[cget(CalendarDAY_OF_WEEK)-1];

}

对于单双数日,能被2整除就是双数日,反之是单数日

1、使用Calendar类。

Calendar cal = CalendargetInstance();

calset(CalendarYEAR, 2016); // 2016年

calset(CalendarWEEK_OF_YEAR, 10); // 设置为2016年的第10周

calset(CalendarDAY_OF_WEEK, 2); // 1表示周日,2表示周一,7表示周六

Date date = calgetTime();

以上就能得到2016年第10周的周一的Date时间。

注:上面代码是手工敲的,没有放到eclipse中运行,有写错的地方请谅解

java中Calendar类中给出了求第几天第几周的方法的,所以直接引用即可。

Calendar ca = CalendargetInstance();//创建一个日期实例

casetTime(new Date());//实例化一个日期

Systemoutprintln(caget(CalendarDAY_OF_YEAR));//获取是第多少天

Systemoutprintln(caget(CalendarWEEK_OF_YEAR));//获取是第几周

备注:此方法提供了很多方法,如查月,日等等。

public static void main(String[] args) {

Calendar cal=CalendargetInstance();

Systemoutprintln(calgetTime());

Systemoutprintln(calget(CalendarDAY_OF_WEEK));

}

返回值是

Mon Sep 24 11:02:28 CST 2007

2

它是从星期天开始算第一天

对中国人来说,普遍使用的是yyyy-MM-dd。Java代码// 实现给定某日期,判断是星期几public static String getWeekday(String date){//必须yyyy-MM-ddSimpleDateFormat sd = new SimpleDateFormat(yyyy-MM-dd);SimpleDateFormat sdw = new SimpleDateFormat(E);Date d = null;try {d = sdparse(date);} catch (ParseException e) {eprintStackTrace();}return sdwformat(d);}判断今天是星期几import javautilCalendar; import javautilDate;public class WeekDay {public WeekDay() {super();// TODO Auto-generated constructor stub}public String getWeekDayString(){String weekString = ;final String dayNames[] = {星期日,星期一,星期二,星期三,星期四,星期五,星期六}; Calendar calendar = CalendargetInstance();Date date = new Date();calendarsetTime(date); int dayOfWeek = calendarget(CalendarDAY_OF_WEEK);weekString = dayNames[dayOfWeek - 1];return weekString;}/ @param args/public static void main(String[] args) {// TODO Auto-generated method stub

以上就是关于java怎么统计出当年有多少个周,并列出那些全部的内容,包括:java怎么统计出当年有多少个周,并列出那些、java 给一个日期判断是星期几、Java 日期如何判断是星期几求大神代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9581220.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存