-
2021-02-27 15:55:03
在Java中,如何查找一年中或一个月中的第几个星期?
以下示例显示年份和月份的第几周。
package com.yiibai;
import java.util.*;
public class DisplayWeekNumber {
public static void main(String[] args) throws Exception {
Date d1 = new Date();
Calendar cl = Calendar.getInstance();
cl.setTime(d1);
System.out.println("today is " + cl.WEEK_OF_YEAR + " week of the year");
System.out.println("today is a " + cl.DAY_OF_MONTH
+ "month of the year");
System.out.println("today is a " + cl.WEEK_OF_MONTH
+ "week of the month");
}
}
上述代码示例将产生以下结果。
today is 3 week of the year
today is a 5month of the year
today is a 4week of the month
示例-2
以下是一年中的一个月的一个例子。
package com.yiibai;
import java.util.Calendar;
public class DisplayWeekNumber2 {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
System.out.println("Current week of month is : "
+ cal.get(Calendar.WEEK_OF_MONTH));
System.out.println("Current week of year is : "
+ cal.get(Calendar.WEEK_OF_YEAR));
cal.add(Calendar.WEEK_OF_MONTH, 1);
System.out.println("date after one year : "
+ (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.DATE)
+ "-" + cal.get(Calendar.YEAR));
}
}
上述代码示例将产生以下结果。
Current week of month is : 4
Current week of year is : 38
date after one year : 9-24-2017
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
更多相关内容 -
java获取一年的周数和间隔天数
2021-02-12 18:35:44= year2) //同一年 103 {104 int timeDistance = 0;105 for(int i = year1 ; i ; i ++)106 {107 if(i%4==0 && i%100!=0 || i%400==0) //闰年 108 {109 timeDistance += 366;110 }111 else //不是闰年 112 {113 ...1 importjava.text.ParseException;2 importjava.text.SimpleDateFormat;3 import java.util.*;4
5 public classTest {6
7 private staticDate deformatDatetime(String strDate, String fmt) {8 try{9 if (fmt == null) {10 return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",11 java.util.Locale.ENGLISH)).parse(strDate);12 } else{13 return (newSimpleDateFormat(fmt, java.util.Locale.ENGLISH))14 .parse(strDate);15 }16 } catch(ParseException e) {17 //TODO Auto-generated catch block
18 e.printStackTrace();19 return null;20 }21 }22 private staticString datetimeToString(Date dt, String fmt) {23 if (fmt == null) {24 return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",25 java.util.Locale.ENGLISH)).format(dt);26 } else{27 return (newSimpleDateFormat(fmt, java.util.Locale.ENGLISH))28 .format(dt);29 }30 }31 private static classDateRange{32 publicDate startDate;33 publicDate endDate;34 publicDateRange(){35
36 }37 publicDateRange(Date dt1,Date dt2){38 startDate=dt1;39 endDate=dt2;40 }41 }42 /**
43 * 根據年份獲得該年所有周次及每周的開始-結束日期44 *@parampvnYear45 *@return
46 */
47 private static LinkedHashMap getWeeksDetByYear(intpvnYear){48 LinkedHashMap lvRet=new LinkedHashMap();49 Calendar lvCal=Calendar.getInstance();50 lvCal.setFirstDayOfWeek(Calendar.MONDAY);51
52 Date lvDt=deformatDatetime(String.valueOf(pvnYear)+"-01-01 00:00:00", null);53 lvCal.setTime(lvDt);54 int lvWeek=1;55 while (true) {56 lvCal.set(Calendar.DAY_OF_WEEK, lvCal.getFirstDayOfWeek()); //Monday
57 Date lvFirstDt=lvCal.getTime();58 if (lvFirstDt.getYear()+1900pvnYear) break;62 lvCal.set(Calendar.DAY_OF_WEEK, lvCal.getFirstDayOfWeek()+6); //Sunday?
63 Date lvLastDt=lvCal.getTime();64 if (lvLastDt.getYear()+1900>pvnYear){65 lvLastDt=deformatDatetime(String.valueOf(pvnYear+1)+"-01-01 00:00:00", null);66 lvCal.setTime(lvLastDt);67 lvCal.add(Calendar.DAY_OF_YEAR, -1);68 lvLastDt=lvCal.getTime();69 }70 lvRet.put(Integer.valueOf(lvWeek), newDateRange(lvFirstDt, lvLastDt));71 lvWeek++;72 lvCal.add(Calendar.WEEK_OF_YEAR, 1);73 }74 returnlvRet;75 }76 public static void main(String[] args) throwsException{77 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");78 LinkedHashMap lvRet=getWeeksDetByYear(2011);79 for (Map.Entryitem:lvRet.entrySet()){80 String startDate = datetimeToString(item.getValue().startDate,"yyyy-MM-dd");81 String endDate = datetimeToString(item.getValue().endDate,"yyyy-MM-dd");82 Date date1 =format.parse(startDate);83 Date date2 =format.parse(endDate);84 int diff =differentDays(date1,date2);85 System.out.println(String.format("Week: %d, %s - %s", item.getKey(),datetimeToString(item.getValue().startDate,"yyyy-MM-dd"),86 datetimeToString(item.getValue().endDate,"yyyy-MM-dd"))+" ----------"+diff);87 }88 }89
90 public static intdifferentDays(Date date1,Date date2)91 {92 Calendar cal1 =Calendar.getInstance();93 cal1.setTime(date1);94
95 Calendar cal2 =Calendar.getInstance();96 cal2.setTime(date2);97 int day1=cal1.get(Calendar.DAY_OF_YEAR);98 int day2 =cal2.get(Calendar.DAY_OF_YEAR);99
100 int year1 =cal1.get(Calendar.YEAR);101 int year2 =cal2.get(Calendar.YEAR);102 if(year1 != year2) //同一年
103 {104 int timeDistance = 0;105 for(int i = year1 ; i < year2 ; i ++)106 {107 if(i%4==0 && i%100!=0 || i%400==0) //闰年
108 {109 timeDistance += 366;110 }111 else //不是闰年
112 {113 timeDistance += 365;114 }115 }116
117 return timeDistance + (day2-day1) ;118 }119 else //不同年
120 {121 return day2-day1;122 }123 }124 }
-
java中如何计算一年总共有多少周
2021-02-12 18:35:48首先,每年至少有52个周,至多有53个周,取决于周一是在哪年(也可以定位周日,这个是由需求决定的),以下是详细代码,其中判断哪一天决定了当周是属于哪一年的逻辑是写在getYearWeekEndDay中。/*** 返回指定年度的...展开全部
计算一62616964757a686964616fe4b893e5b19e31333337393631年有多少个周的思路:首先,每年至少有52个周,至多有53个周,取决于周一是在哪年(也可以定位周日,这个是由需求决定的),以下是详细代码,其中判断哪一天决定了当周是属于哪一年的逻辑是写在getYearWeekEndDay中。
/**
* 返回指定年度的所有周。List中包含的是String[2]对象
* string[0]本周的开始日期,string[1]是本周的结束日期。
* 日期的格式为yyyy-MM-dd。
* 每年的第一个周,必须包含星期一且是完整的七天。
* 例如:2009年的第一个周开始日期为2009-01-05,结束日期为2009-01-11。
* 星期一在哪一年,那么包含这个星期的周就是哪一年的周。
* 例如:2008-12-29是星期一,2009-01-04是星期日,哪么这个周就是2008年度的最后一个周。
*
* @param year 格式 yyyy ,必须大于1900年度 小于9999年
* @return
*/
public static List getWeeksByYear(final int year){
if(year<1900 || year >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
//实现思路,首先计算当年有多少个周,然后找到每个周的开始日期和结束日期
// Calendar calendar = new GregorianCalendar();
// // 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。
// calendar.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
// calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
// calendar.setMinimalDaysInFirstWeek(7); //设置每周最少为7天
// calendar.set(Calendar.YEAR, year); // 设置年度为指定的年
// //首先计算当年有多少个周,每年都至少有52个周,个别年度有53个周
int weeks = getWeekNumByYear(year);
// System.out.println(year+"共有"+weeks+"个周");
List result = new ArrayList(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);
result.add(tempWeek);
// System.out.println(i+"="+tempWeek[0]+"_"+tempWeek[1]);
}
return result;
}
/**
* 计算指定年度共有多少个周。
* @param year 格式 yyyy ,必须大于1900年度 小于9999年
* @return
*/
public static int getWeekNumByYear(final int year){
if(year<1900 || year >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
int result = 52;//每年至少有52个周 ,最多有53个周。
String date = getYearWeekFirstDay(year,53);
if(date.substring(0, 4).equals(year+"")){ //判断年度是否相符,如果相符说明有53个周。
result = 53;
}
return result;
}
/**
* 计算某年某周的开始日期
* @param yearNum 格式 yyyy ,必须大于1900年度 小于9999年
* @param weekNum 1到52或者53
* @return 日期,格式为yyyy-MM-dd
*/
public static String getYearWeekFirstDay(int yearNum,int weekNum) {
if(yearNum<1900 || yearNum >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
cal.setMinimalDaysInFirstWeek(7); //设置每周最少为7天
cal.set(Calendar.YEAR, yearNum);
cal.set(Calendar.WEEK_OF_YEAR, weekNum);
//分别取得当前日期的年、月、日
return getFormatDate(cal.getTime());
}
/**
* 计算某年某周的结束日期
* @param yearNum 格式 yyyy ,必须大于1900年度 小于9999年
* @param weekNum 1到52或者53
* @return 日期,格式为yyyy-MM-dd
*/
public static String getYearWeekEndDay(int yearNum,int weekNum) {
if(yearNum<1900 || yearNum >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);//每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
cal.setMinimalDaysInFirstWeek(7); //设置每周最少为7天
cal.set(Calendar.YEAR, yearNum);
cal.set(Calendar.WEEK_OF_YEAR, weekNum);
return getFormatDate(cal.getTime());
}
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
-
LocalDate获取一年的周数,及指定周数周一到周日对应得日期
2019-08-22 09:54:21java8如何获取一年拥有的周数及周数对应的日期 下面是一个测试的例子 public class TestWeekNumAndDate { /** * @param args */ public static void main(String[] args) { //初始化,第一周至少四...java8如何获取一年拥有的周数及周数对应的日期
下面是一个测试的例子public class TestWeekNumAndDate { /** * @param args */ public static void main(String[] args) { //初始化,第一周至少四天 WeekFields wfs= WeekFields.of(DayOfWeek.MONDAY, 4); //一年最后一天日期的LocalDate,如果该天获得的周数为1或52,那么该年就只有52周,否则就是53周 //获取指定时间所在年的周数 int num= LocalDate.of(2019, 12, 31).get(wfs.weekOfWeekBasedYear()); num = num == 1 ? 52 : num; System.out.println("第" + num + "周,周一日期:" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.MONDAY)); System.out.println("第" + num + "周,周二日期:" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.TUESDAY)); System.out.println("第" + num + "周,周三日期:" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.WEDNESDAY)); System.out.println("第" + num + "周,周四日期:" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.THURSDAY)); System.out.println("第" + num + "周,周五日期:" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.FRIDAY)); System.out.println("第" + num + "周,周六日期:" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.SATURDAY)); System.out.println("第" + num + "周,周日日期:" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.SUNDAY)); //该格式周日为一周第一天,周六为一周最后一天 System.out.println(LocalDate.parse("2019-52-1", DateTimeFormatter.ofPattern("YYYY-ww-e", Locale.CHINA))); } private static LocalDate getDateByYearAndWeekNumAndDayOfWeek(Integer year, Integer num, DayOfWeek dayOfWeek) { //周数小于10在前面补个0 String numStr = num < 10 ? "0" + String.valueOf(num) : String.valueOf(num); //2019-W01-01获取第一周的周一日期,2019-W02-07获取第二周的周日日期 String weekDate = String.format("%s-W%s-%s", year, numStr, dayOfWeek.getValue()); return LocalDate.parse(weekDate, DateTimeFormatter.ISO_WEEK_DATE); } }
-
js计算一年有多少周(星期一为第一天)
2022-04-04 10:57:12// 一年第一天是周几 var first = new Date(year, 0, 1).getDay() if (first == 1) { first = 0 } else if (first == 0) { first = 1 } else { first = 8 - first } // 计算一年有多少天 if ((year % 4 =... -
用java怎么计算当前年有多少周
2021-02-28 11:56:26展开全部计算一年有多少个周的思路:首先,每年至少有52个周,至多有53个周,取决于周一是在62616964757a686964616fe58685e5aeb931333361323534哪年(也可以定位周日,这个是由需求决定的),以下是详细代码,其中判断... -
记一次用momentjs获取一年内所有周的起始时间遇到的bug
2020-12-19 13:55:57前言业务有一个需求,选择了某一年后需要生成一个下拉列表让用户可以选择这一年各个周,然后前端产生这个周起始和结束的时间(周一早上00:00:00到周日晚上00:00:00),发送给后端接口获取所选周的数据。操作项目中为了... -
js获取一年有多少周及每周详细日期
2021-11-09 15:48:00获取一年的周数量及详细 function formatNumber(n) { return n.toString().length > 1 ? n : '0' + n } const getWeek = { run: (year) => { let days = getWeek.getDate(year || new Date().getFullYear... -
LocalDate获取一年的周数,及指定周数周一到周日对应得日期-java8
2022-03-30 13:19:24public class TestWeekNumAndDate { /** * @param args ... //一年最后一天日期的LocalDate,如果该天获得的周数为1或52,那么该年就只有52周,否则就是53周 //获取指定时间所在年的周数 int num -
java获取一年共有多少周
2021-02-12 23:56:13展开全部计算一年有多少个周的636f707962616964757a686964616f31333337393632思路:首先,每年至少有52个周,至多有53个周,取决于周一是在哪年(也可以定位周日,这个是由需求决定的),以下是详细代码,其中判断哪一... -
java8 根据年份和周数 获取周一和周日日期
2021-05-19 22:17:28java8 根据年份和周数 获取周一和周日日期一、需求是根据年份和周数获取周一和周日日期二、实现的代码三、结果 一、需求是根据年份和周数获取周一和周日日期 二、实现的代码 package com.chenheng.mp; import org.... -
php获取一年内所有周数,并显示开始时间和结束时间
2020-04-16 19:51:09<? function get_week($year){ $year_start = $year . "-01-01"; $year_end = $year . "-12-31"; $startday = strtotime($year_start);...if (intval(date('N', $startday)) !...$startday = str... -
java获取一年的周数、单周开始时间与结束时间、一年所有周开始时间与结束时间、月开始时间与结束时间
2020-10-21 16:54:15# java获取一年的周数、单周开始时间与结束时间、一年所有周开始时间与结束时间、月开始时间与结束时间 package com.frgk.produce.util; import org.springframework.util.CollectionUtils; import java.text.... -
PHP获取一年有几周以及每周开始日期和结束日期
2017-08-14 05:17:39一年有多个周,每周的开始日期和结束日期 参考代码一:[正在使用的版本] <?phpheader("Content-type:text/html;charset=utf-8");date_default_timezone_set("Asia/Shanghai");$year = (int)$_GET['year'];$week =... -
javascript根据年求出这一年周的详细信息(每一周包含哪些日期)
2022-03-17 09:36:19console.log(getWeeksByYear(2022)) // 根据年份求出每一周包含的日期 function getWeeksByYear(year) { var startTime = new Date(); startTime.setFullYear(year); startTime.setMonth(0) ... -
在java,如何找到一年的总周数?_java_酷徒编程知识库
2021-02-12 23:56:12我得到错误的答案,2020有53周,但是这段代码给出52周,请给我...import java.time.LocalDate;import java.time.temporal.WeekFields;import java.util.Calendar;import java.util.GregorianCalendar;import org.jo... -
Java获取一年有多少周、某周的第一天和最后一天,当前时间所在当年的实际周数
2021-02-28 11:57:08import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;...public class DateTest {// 获取当前时间所在年的周数 public static int getWeekOfYear(Date date) {... -
Oracle数据库的周数计算
2008-12-13 16:19:43Oracle数据库的周数计算 日期计算,算第n周的第一天及最后一天是几号。 公式... -
根据传入的时间得到传入时间天在这一年的周数函数
2008-08-28 14:43:00private int DatePart(System.DateTime dt) { int weeknow = Convert.ToInt32(dt.DayOfWeek); int daydiff = (-1) * (weeknow+1);...int days = System.DateTime.Now.AddDays(daydiff).DayOfYear;... -
mysql中是如何处理周数,一年的第一周到底从哪天开始计算?
2021-01-08 10:17:45新的一年2021年来了, 1月1日这天是星期五,不是星期一也不是星期日,这一天到底是2020年的最后一周呢,还是2021年的第一周? 对我而言,这一周是2021年的第一周,但是在mysql中是如何处理呢? 之前做任务的时候,在... -
Java时间:获取特定年份的最大周数
2021-03-09 05:00:05我只找到了Joda Time的解决方案.我的解决方案只有在最后一天不在第一周时才有效:LocalDate.now() // or any other LocalDate.withDayOfMonth(31).withMonth(12).get(weekFields.weekOfWeekBasedYear())那么Java ... -
根据一年的周数得到日期
2010-10-19 21:31:00public void BindWeek(int curWeek) { ddlWeek.Items.Clear(); ListItem li;... i++)//一年53周 { li = new ListItem(); string[] arr = GetWeek(Convert.ToInt32(ddlYear.Selec -
c# 计算一年有多少周
2020-01-02 09:26:15前两天计算获取2019有多少周,现有的代码算出来有54周,看的我一脸懵逼。 以周一为每周的第一天 public static int GetYearWeekCount(int year) { var dateTime = DateTime.Parse(year + "-01-01");... -
获取一年的所有周
2017-04-06 17:03:00如何获取一年的所有周? 代码如下 <?php function get_week($year="") { if($year===""){$year=date("Y");} $year_start = $year . "-01-01"; $year_end = $... -
[Asp.net] 计算某一天是一年中的第几周
2013-08-17 22:55:31public static int GetWeekNumOfYear(DateTime dt) { int days = dt.DayOfYear + (7 - (int)dt.DayOfWeek); return days / 7 + (days % 7 == 0 ? 0 : 1); }