java获取一年的周数和间隔天数
java获取一年的周数和间隔天数
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class Test { private static Date deformatDatetime(String strDate, String fmt) { try { if (fmt == null) { return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", java.util.Locale.ENGLISH)).parse(strDate); } else { return (new SimpleDateFormat(fmt, java.util.Locale.ENGLISH)) .parse(strDate); } } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } private static String datetimeToString(Date dt, String fmt) { if (fmt == null) { return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", java.util.Locale.ENGLISH)).format(dt); } else { return (new SimpleDateFormat(fmt, java.util.Locale.ENGLISH)) .format(dt); } } private static class DateRange{ public Date startDate; public Date endDate; public DateRange(){ } public DateRange(Date dt1,Date dt2){ startDate=dt1; endDate=dt2; } } /** * 根據年份獲得該年所有周次及每周的開始-結束日期 * @param pvnYear * @return */ private static LinkedHashMap<Integer,DateRange> getWeeksDetByYear(int pvnYear){ LinkedHashMap<Integer, DateRange> lvRet=new LinkedHashMap<Integer,DateRange>(); Calendar lvCal=Calendar.getInstance(); lvCal.setFirstDayOfWeek(Calendar.MONDAY); Date lvDt=deformatDatetime(String.valueOf(pvnYear)+"-01-01 00:00:00", null); lvCal.setTime(lvDt); int lvWeek=1; while (true) { lvCal.set(Calendar.DAY_OF_WEEK, lvCal.getFirstDayOfWeek()); // Monday Date lvFirstDt=lvCal.getTime(); if (lvFirstDt.getYear()+1900<pvnYear){ lvFirstDt=lvDt; } if (lvFirstDt.getYear()+1900>pvnYear) break; lvCal.set(Calendar.DAY_OF_WEEK, lvCal.getFirstDayOfWeek()+6); // Sunday? Date lvLastDt=lvCal.getTime(); if (lvLastDt.getYear()+1900>pvnYear){ lvLastDt=deformatDatetime(String.valueOf(pvnYear+1)+"-01-01 00:00:00", null); lvCal.setTime(lvLastDt); lvCal.add(Calendar.DAY_OF_YEAR, -1); lvLastDt=lvCal.getTime(); } lvRet.put(Integer.valueOf(lvWeek), new DateRange(lvFirstDt, lvLastDt)); lvWeek++; lvCal.add(Calendar.WEEK_OF_YEAR, 1); } return lvRet; } public static void main(String[] args) throws Exception{ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); LinkedHashMap<Integer,DateRange> lvRet=getWeeksDetByYear(2011); for (Map.Entry<Integer, DateRange> item:lvRet.entrySet()){ String startDate = datetimeToString(item.getValue().startDate,"yyyy-MM-dd"); String endDate = datetimeToString(item.getValue().endDate,"yyyy-MM-dd"); Date date1 = format.parse(startDate); Date date2 = format.parse(endDate); int diff = differentDays(date1,date2); System.out.println(String.format("Week: %d, %s - %s", item.getKey(),datetimeToString(item.getValue().startDate,"yyyy-MM-dd"), datetimeToString(item.getValue().endDate,"yyyy-MM-dd"))+" ----------"+diff); } } public static int differentDays(Date date1,Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); int day1= cal1.get(Calendar.DAY_OF_YEAR); int day2 = cal2.get(Calendar.DAY_OF_YEAR); int year1 = cal1.get(Calendar.YEAR); int year2 = cal2.get(Calendar.YEAR); if(year1 != year2) //同一年 { int timeDistance = 0 ; for(int i = year1 ; i < year2 ; i ++) { if(i%4==0 && i%100!=0 || i%400==0) //闰年 { timeDistance += 366; } else //不是闰年 { timeDistance += 365; } } return timeDistance + (day2-day1) ; } else //不同年 { return day2-day1; } } }
java获取一年的周数和间隔天数的更多相关文章
- java获取当前上一周、上一月、上一年的时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c = Calend ...
- C# 获取当前日期当年的周数
这几天跨年,项目上遇到了一个周数计算的问题. 2016年的元旦是周五开始的,之前系统计算的是属于15年的第53个周,但是年份已经到了16年了. 公司要求从1月1号周五开始算作16年的第一个周,今天1月 ...
- JAVA获取当前日期时间所在周的周一和周日日期
/** * 获取当前时间所在周的周一和周日的日期时间 * @return */ public static Map<String,String> getWeekDate() { Map&l ...
- Java获取当前第几周【转】
本文copy自:http://swxzqsd.blog.sohu.com/156208509.html 作者:camelcanoe String today = "2010-01-11&qu ...
- java获取当前日期所在的周的周一,并以周一为一周开始
public String getMonday(String date) { if (date == null || date.equals("")) { System.out.p ...
- java获取本月开始时间和结束时间、上个月第一天和最后一天的时间以及当前日期往前推一周、一个月
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.uti ...
- Java获取某年某周的第一天
Java获取某年某周的第一天 1.设计源码 FirstDayOfWeek.java: /** * @Title:FirstDayOfWeek.java * @Package:com.you.freem ...
- sql 中,如何获取两个日期之前月数、周数、天数
1.获取两个日期之间的月数.周数.天数语法 --1.获取两个日期之间的月数.周数.天数 --1.1)声明参数 ) ) --1.2)获取两个日期直接的月数 select DATEDIFF(MM,@sta ...
- Java获取日期属于当年第几周
String today = "2013-01-14"; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM- ...
随机推荐
- bzoj1123 割点性质应用
删掉无向图上任意一点,请求出将会增加的不连通的点对数 将无向图联通性的问题转化到搜索树方向上考虑 如果一个点不是割点,那么删掉该点的答案很简单,就是2*(n-1) 如果点u是割点,同时u在搜索树上有t ...
- Fiddler抓包6-get请求(url详解)
前言 上一篇介绍了Composer的功能,可以模拟get和post请求,get请求有些是不带参数的,这种比较容易,直接放到url地址栏就行.有些get请求会带有参数,本篇详细介绍url地址格式. 一. ...
- mysql入门练习
2.详细解释列mysql执行语句的每个参数与参数值的含义 mysql -hlocalhost -P3306 -uroot -proot 连接数据库,端口号为3306, 用户名root, 密码roo ...
- ajax----发送异步请求的步骤
1)获取(创建)Ajax对象:获取XMLHttpRequest对象2)创建请求:调用xhr的open方法3)在发送请求之前需要设置回调函数:绑定指定xhr的onreadystatechange事件4) ...
- Appium 如何模拟按键
from appium.webdriver import Remote driver.keyevent(4) python中点击返回键是这样写的 附录 keycode 电话键 KEYCODE_CALL ...
- 牛客寒假算法基础集训营4 I题 Applese 的回文串
链接:https://ac.nowcoder.com/acm/contest/330/I 来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如--判断一个字符串是不是回文串. ...
- python中深拷贝与浅拷贝
# 1.浅拷贝(复制东西)a = [11,22,33] # 实际上是浅拷贝# 没有把这个变量的值赋进去,而是把另一个变量的地址拿过去了,就叫浅拷贝.b = a # print(id(a))# prin ...
- 华硕X75VB安装ubuntu12.10网卡不可用等相关问题总结
笔记本相关信息: 电脑型号:华硕X75VB 笔记本电脑 处理器:i5-3230M 2.60GHz 双核 主板:华硕X75VB (英特尔 Ivy Bridge - HM76 Express芯片组) 内存 ...
- Linux下查看80端口是否被占用
方式一: ps -ef |grep 80 方式二: netstat -anp |grep :80 方式三: lsof -i:80 方式四: netstat -tunlp |grep :80 方式五: ...
- GoLang函数参数的传递练习
春节买的GO方面的书,看了一次.现在撸一些代码,作为练习. // Copyright © 2019 NAME HERE <EMAIL ADDRESS> // // Licensed und ...