java如何得到指定日期月的第几周?按每年的1号为第一周开始算。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何得到指定日期月的第几周?按每年的1号为第一周开始算。相关的知识,希望对你有一定的参考价值。
例如201901月1号是周2,则1月第一周时间段为:20190101 至20190106,2018年12月31号是周一也算是19年的第一周
201901月28号是周1,则也算是2月份的第一周。 在线等 急!!! 谢谢各位大佬了
你第一问需要思考一下,你第二问日历类直接get即可!
第一问:
年末与年初进行周与周重叠的时候,获取的是第二年的第一周数字,这个时候其实很简单,因为月份是绝对不相同的对不?
直接判断月份即可,头年月份肯定不会第二年月份想等,在同时判断一下,周是否为1,条件同时达到,就叠加52即可!
截个图,你参照日历看一下,分毫不差:
追问但是老哥,我要的是那些临界值比如20190128-20190203这个时间段他都是属于2月份的第一周,1月份28号到31号不算是1月份的范围内了。跨年的时候也是,20181231也算是19年的第一周。 能再帮我看看吗 谢谢
追答你这问题,看的好费劲,哈哈……
我明白了,其实这也不难
有一个东西是不变的,就是年中的第几周!
比如1月28,与2月03同属年中第五周,周相同,就判断月份,
月份不同就开始偏移,偏移单位用天进行偏移,比如你输入的是1月30号,那就循环左偏移,条件是跳出年中第五周就break,然后记录这一天
然后右偏移,一周,也就是到达第六周,break,记录这一天,取这两个偏移记录的中间值,就是你需要的东东了
在外面没时间测试,应该没问题!
追问能发下源码吗?谢谢
追答我把核心都给你了啊,代码的话,我没写!忙着的呢………
参考技术A 我是这样想的:(例如现在是2月)先获取2月1日为星期X。
然后获取今天是2月y日
用x+(y-1)/7 就能得到今天是2月的第几周
以下是代码:
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Date
static Calendar calendar = Calendar.getInstance();
static int year,month,day; //分别代表年,月,日
static int date; //最终结果为:是month月的第date周
public static void main(String[] args)
year = calendar.get(Calendar.YEAR); /*获取今天是几年几月几日
month = calendar.get(Calendar.MONTH)+1; *(可将其直接赋值为所需判断日期)
day = calendar.get(Calendar.DATE)-1; */
String week = getDayOfWeekByDate(year+"-0"+month+"-01");
//调用方法获取本月的一日是星期几
if(week.equals("星期一"))
date=1;
if(week.equals("星期二"))
date=2;
if(week.equals("星期三"))
date=3;
if(week.equals("星期四"))
date=4;
if(week.equals("星期五"))
date=5;
if(week.equals("星期六"))
date=6;
if(week.equals("星期七"))
date=7;
date+=day;
date/=7; //应为是整数类,所以不会出现浮点数
System.out.print("今天是"+month+"月的第"+date+"周\n");
System.out.print("今天是"+getDayOfWeekByDate(year+"-0"+month+"-0"+(day+1))+"\n");
//获取指定时间是星期几
public static String getDayOfWeekByDate(String date)
String dayOfweek = "-1";
try
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date myDate = myFormatter.parse(date);
SimpleDateFormat formatter = new SimpleDateFormat("E");
String str = formatter.format(myDate);
dayOfweek = str;
catch (Exception e)
System.out.println(e.getMessage());
return dayOfweek;
追问
可我要的是那些临界值比如20190128-20190203这个时间段他都是属于2月份的第一周,1月份28号到31号不算是1月份的范围内了。跨年的时候也是,20181231也算是19年的第一周。 能再帮我看看吗 谢谢
js实现获取当前时间是本月第几周和年的第几周的方法
js实现获取当前时间是本月第几周和年的第几周的方法
获取本月第几周的方法:
1 var getMonthWeek = function (a, b, c) { 2 /** 3 * a = d = 当前日期 4 * b = 6 - w = 当前周的还有几天过完(不算今天) 5 * a + b 的和在除以7 就是当天是当前月份的第几周 6 */ 7 var date = new Date(a, parseInt(b) - 1, c), 8 w = date.getDay(), 9 d = date.getDate(); 10 if(w==0){ 11 w=7; 12 } 13 var config={ 14 getMonth:date.getMonth()+1, 15 getYear:date.getFullYear(), 16 getWeek:Math.ceil((d + 6 - w) / 7), 17 } 18 return config; 19 }; 20 var getDate=getMonthWeek("2018", "12", "31"); 21 console.log("今天是 " + getDate.getYear + " 年的第 "+ getDate.getMonth + " 月的第 " + getDate.getWeek + " 周");
结果:
获取年的第几周的方法:
1 var getYearWeek = function(a, b, c) 2 { 3 /* 4 date1是当前日期 5 date2是当年第一天 6 d是当前日期是今年第多少天 7 用d + 当前年的第一天的周差距的和在除以7就是本年第几周 8 */ 9 var date1 = new Date(a, parseInt(b) - 1, c), 10 date2 = new Date(a, 0, 1), 11 d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000); 12 return Math.ceil((d + ((date2.getDay() + 1) - 1)) / 7); 13 };
以上是关于java如何得到指定日期月的第几周?按每年的1号为第一周开始算。的主要内容,如果未能解决你的问题,请参考以下文章
JAVA给一个时间获取一年的第几周,正常自然周是 星期一至星期日为一周,