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号为第一周开始算。的主要内容,如果未能解决你的问题,请参考以下文章

oracle 从系统里取出一个月的第几周

JAVA给一个时间获取一年的第几周,正常自然周是 星期一至星期日为一周,

Excel 2010 得到当天的日期/得到一年中的第几周/得到当前一周中的星期几

在mysql中得到当前日期是当月第几周

如何将星期天设置为excel对周计算的第一天。

java 获取iso 标准的日期的第几周