本人亲测,有用,适用性比较强,直接上代码说话。

  1. package com.helloBike.data;
  2.  
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.time.DayOfWeek;
  6. import java.time.Instant;
  7. import java.time.LocalDate;
  8. import java.time.LocalTime;
  9. import java.time.ZoneId;
  10. import java.time.temporal.TemporalAdjusters;
  11. import java.util.Calendar;
  12. import java.util.Date;
  13.  
  14. public class Data {
  15.  
  16. public static void main(String[] args) throws ParseException {
  17. // LocalDate localDate = LocalDate.parse("2017-10-07");
  18. // LocalDate nextSunday = localDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
  19. // System.out.println(localDate);
  20. // System.out.println(nextSunday);
  21.  
  22. // a(20171004);
  23. // System.out.println("****************************************");
  24. getFirstDay("2017-10-17");
  25. System.out.println("****************************************");
  26. getLastDay1("2017-10-17");
  27. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
  28. String a="2017-10-17";// new Date()为获取当前系统时间
  29. Date b =df.parse(a);
  30. System.out.println("Date a="+b);
  31. if(true==identyWeek(b)){
  32. System.out.println("1");
  33. }else{
  34. System.out.println("0");
  35. }
  36. // stampToDate("20171004");
  37. // LocalDate c = LocalDate.now();
  38. // System.out.println("LocalDate="+c);
  39. // localToDate(c);
  40. // System.out.println("localToDate(c)="+localToDate(c));
  41. // System.out.println("****************************************");
  42.  
  43. }
  44.  
  45. /**
  46. * 获取当前时间并和传入的时间判断,当传入时间的最后一天小于这一天的最后一天的时候表示这周没过完就不执行语句
  47. * @param data
  48. * @return
  49. * @throws ParseException
  50. */
  51. public static boolean identyWeek(Date data) throws ParseException{
  52. //获取传入时间的最后一天
  53. SimpleDateFormat date1 = new SimpleDateFormat("yyyy-MM-dd");
  54. System.out.println("identyWeekdate1="+date1);
  55.  
  56. String date2 = date1.format(data);
  57. System.out.println("identyWeek date2="+date2);
  58.  
  59. System.out.println("getLastDay date2");
  60. String lastTime = getLastDay1(date2);
  61.  
  62. System.out.println("identyWeek lastTime="+lastTime);
  63. //获取当前时间
  64. Date date= new Date();//创建一个时间对象,获取到当前的时间
  65. System.out.println("当前时间date"+date);
  66.  
  67. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//设置时间显示格式
  68. String str = sdf.format(date);//将当前时间格式化为需要的类型
  69. System.out.println("identyWeek str="+str);
  70.  
  71. System.out.println("getLastDay1 ");
  72. String nowLastTime = getLastDay1(str);
  73. System.out.println("nowLastTime="+nowLastTime);
  74. //当当前时间最后一天和开始时间最后一天
  75. int res=lastTime.compareTo(nowLastTime);
  76. if(res<0)
  77. return true;
  78. else
  79. return false;
  80. }
  81.  
  82. /**
  83. * 传入字符串类型日期,返回该日期的本周最后天(这里设置的是周5为最后一天)
  84. * getLastDay
  85. * @param x
  86. * @throws ParseException
  87. */
  88. public static String getLastDay1(String x) throws ParseException{
  89.  
  90. Date InputDate = new SimpleDateFormat("yyyy-MM-dd").parse(String.valueOf(x));
  91. //创建一个日历对象cDate
  92. Calendar cDate = Calendar.getInstance();
  93. //调用日历对象的方法得到本周第一天的值
  94. cDate.setFirstDayOfWeek(Calendar.MONDAY);
  95. //将时间传给日历对象
  96. cDate.setTime(InputDate);
  97. //创建一个日历对象firstDate
  98. Calendar lastDate = Calendar.getInstance();
  99. //设置一周第一天日期参数 ,这里设置为monday 星期一 ,周一到周日
  100. lastDate.setFirstDayOfWeek(Calendar.MONDAY);
  101. //设置日历时间,当前时间为输入的时间
  102. lastDate.setTime(InputDate);
  103. //设置获得的年份相对于第一年的,。没什么用
  104. if(cDate.get(Calendar.WEEK_OF_YEAR)==1&&cDate.get(Calendar.MONTH)==11){
  105. lastDate.set(Calendar.YEAR, cDate.get(Calendar.YEAR)+1);
  106. }
  107. //得到这一点相对于一周来说是星期几,星期2的返回值是3
  108. int week = cDate.get(Calendar.DAY_OF_WEEK)-1;
  109. System.out.println("week="+week);
  110. //判断这周是否为周6周日,是的话就算出下一周的起始时间,然后推算出周六的时间,
  111. if(week==0|| week==6){
  112. System.out.println("在周日或周六的时候");
  113. System.out.println("x="+x);
  114. //得到本年的周数
  115. int typeNum = cDate.get(Calendar.WEEK_OF_YEAR)+1;
  116. //设置本年的周数
  117. lastDate.set(Calendar.WEEK_OF_YEAR, typeNum);
  118. //设置本周的天数,本周定位为SATURDAY
  119. lastDate.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY+6);
  120. //设置将本周周日设置为第一天
  121. //firstDate.setFirstDayOfWeek(Calendar.FRIDAY);
  122. //所在周的起始日期
  123. String lastTime = new SimpleDateFormat("yyyy-MM-dd").format(lastDate.getTime());
  124. return lastTime;
  125. }else {
  126. //if(week==1||week==2||week==3||week==4||week==5)
  127.  
  128. System.out.println("不再周六或周日");
  129. System.out.println("x="+x);
  130. //当本周不为周六和周日的时候
  131. System.out.println("挡在周一或周六的时候");
  132. //得到本年的周数-1
  133. int typeNum = cDate.get(Calendar.WEEK_OF_YEAR);
  134. System.out.println("所在第几周:"+typeNum);
  135. //设置本年的周数
  136. lastDate.set(Calendar.WEEK_OF_YEAR, typeNum);
  137. //设置本周的天数,本周定位为SATURDAY
  138. lastDate.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY+6);
  139. //设置将本周周日设置为第一天
  140. //firstDate.setFirstDayOfWeek(Calendar.FRIDAY);
  141. //所在周的起始日期
  142. String lastTime = new SimpleDateFormat("yyyy-MM-dd").format(lastDate.getTime());
  143. return lastTime;
  144.  
  145. }
  146. }
  147. /**
  148. *获得系统当天的时间,将localdate格式转换成date格式的日期
  149. *
  150. */
  151. public static Date localToDate(LocalDate a) throws ParseException{
  152. //设置转换格式.时间偏移id
  153. ZoneId zone = ZoneId.systemDefault();
  154. //使用ZonedDateTime将LocalDate转换为Instant。
  155. Instant instant = a.atStartOfDay().atZone(zone).toInstant();
  156. //使用from()方法从Instant对象获取Date的实例
  157. java.util.Date date = Date.from(instant);
  158. //将data按照一定的格式来分辨.
  159. String b = new SimpleDateFormat("yyyy-MM-dd").format(date.getTime());
  160. System.out.println("b="+b);
  161. Date c =new SimpleDateFormat("yyyy-MM-dd").parse(b);
  162. System.out.println("c="+c);
  163. return c;
  164. }
  165.  
  166. public static String stampToDate(String s){
  167. String res;
  168. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
  169. long lt = new Long(s);
  170. Date date = new Date(lt);
  171. res = simpleDateFormat.format(date);
  172. System.out.println("res="+res);
  173. return res;
  174. }
  175.  
  176. /**
  177. * 传入一个string类型的参数返回该周的最后一天(这里设置最后一天为周5)
  178. * get last day
  179. */
  180. public static void getLastDay(String x) throws ParseException{
  181. Date InputDate = new SimpleDateFormat("yyyy-MM-dd").parse(String.valueOf(x));
  182. //创建一个日历对象cDate
  183. Calendar cDate = Calendar.getInstance();
  184. //调用日历对象的方法得到本周第一天的值
  185. cDate.setFirstDayOfWeek(Calendar.MONDAY);
  186. //将时间传给日历对象
  187. cDate.setTime(InputDate);
  188. //创建一个日历对象firstDate
  189. Calendar lastDate = Calendar.getInstance();
  190. //设置一周第一天日期参数 ,这里设置为monday 星期一 ,周一到周日
  191. lastDate.setFirstDayOfWeek(Calendar.MONDAY);
  192. //设置日历时间,当前时间为输入的时间
  193. lastDate.setTime(InputDate);
  194. //设置获得的年份相对于第一年的,。没什么用
  195. if(cDate.get(Calendar.WEEK_OF_YEAR)==1&&cDate.get(Calendar.MONTH)==11){
  196. lastDate.set(Calendar.YEAR, cDate.get(Calendar.YEAR)+1);
  197. }
  198. //得到这一点相对于一周来说是星期几,星期2的返回值是3
  199. int week = cDate.get(Calendar.DAY_OF_WEEK);
  200. System.out.println("week="+week);
  201. //判断这周是否为周6周日,是的话就算出下一周的起始时间,然后推算出周六的时间,
  202. if(week==0|| week==6){
  203. System.out.println("在周一或周六的时候");
  204. System.out.println("x="+x);
  205. //得到本年的周数
  206. int typeNum = cDate.get(Calendar.WEEK_OF_YEAR)+1;
  207. //设置本年的周数
  208. lastDate.set(Calendar.WEEK_OF_YEAR, typeNum);
  209. //设置本周的天数,本周定位为SATURDAY
  210. lastDate.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY+6);
  211. //设置将本周周日设置为第一天
  212. //firstDate.setFirstDayOfWeek(Calendar.FRIDAY);
  213. //所在周的起始日期
  214. String firstTime = new SimpleDateFormat("yyyy-MM-dd").format(lastDate.getTime());
  215.  
  216. System.out.println("firstTime:"+firstTime);
  217. }else{
  218. System.out.println("不再周六或周日");
  219. System.out.println("x="+x);
  220. //当本周不为周六和周日的时候
  221. System.out.println("挡在周一或周六的时候");
  222. //得到本年的周数-1
  223. int typeNum = cDate.get(Calendar.WEEK_OF_YEAR);
  224. System.out.println("所在第几周:"+typeNum);
  225. //设置本年的周数
  226. lastDate.set(Calendar.WEEK_OF_YEAR, typeNum);
  227. //设置本周的天数,本周定位为SATURDAY
  228. lastDate.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY+6);
  229. //设置将本周周日设置为第一天
  230. //firstDate.setFirstDayOfWeek(Calendar.FRIDAY);
  231. //所在周的起始日期
  232. String lastTime = new SimpleDateFormat("yyyy-MM-dd").format(lastDate.getTime());
  233. System.out.println("firstTime:"+lastTime);
  234. }
  235. }
  236.  
  237. /**
  238. *
  239. * 传入一个时间参数,返回该日期的周六
  240. * @param x
  241. * @throws ParseException
  242. */
  243. public static void getFirstDay(String x) throws ParseException{
  244. Date InputDate = new SimpleDateFormat("yyyy-MM-dd").parse(String.valueOf(x));
  245. //创建一个日历对象cDate
  246. Calendar cDate = Calendar.getInstance();
  247. //调用日历对象的方法得到本周第一天的值
  248. cDate.setFirstDayOfWeek(Calendar.MONDAY);
  249. //将时间传给日历对象
  250. cDate.setTime(InputDate);
  251. //创建一个日历对象firstDate
  252. Calendar firstDate = Calendar.getInstance();
  253. //设置一周第一天日期参数 ,这里设置为monday 星期一 ,周一到周日
  254. firstDate.setFirstDayOfWeek(Calendar.MONDAY);
  255. //设置日历时间,当前时间为输入的时间
  256. firstDate.setTime(InputDate);
  257. //设置获得的年份相对于第一年的,。没什么用
  258. if(cDate.get(Calendar.WEEK_OF_YEAR)==1&&cDate.get(Calendar.MONTH)==11){
  259. firstDate.set(Calendar.YEAR, cDate.get(Calendar.YEAR)+1);
  260. }
  261. //得到这一点相对于一周来说是星期几,星期2的返回值是3
  262. int week = cDate.get(Calendar.DAY_OF_WEEK)-1;
  263. System.out.println("week="+week);
  264. //判断这周是否为周6周日,是的话就算出下一周的起始时间,然后推算出周六的时间,
  265. if(week==0|| week==6){
  266. System.out.println("挡在周一或周六的时候");
  267. System.out.println("x="+x);
  268. //得到本年的周数
  269. int typeNum = cDate.get(Calendar.WEEK_OF_YEAR);
  270. //设置本年的周数
  271. firstDate.set(Calendar.WEEK_OF_YEAR, typeNum);
  272. //设置本周的天数,本周定位为SATURDAY
  273. firstDate.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
  274. //设置将本周周日设置为第一天
  275. //firstDate.setFirstDayOfWeek(Calendar.FRIDAY);
  276. //所在周的起始日期
  277. String firstTime = new SimpleDateFormat("yyyy-MM-dd").format(firstDate.getTime());
  278.  
  279. System.out.println("firstTime:"+firstTime);
  280. }else{
  281. System.out.println("不再周六或周日");
  282. System.out.println("x="+x);
  283. //当本周不为周六和周日的时候
  284. System.out.println("挡在周一或周六的时候");
  285. //得到本年的周数-1
  286. int typeNum = cDate.get(Calendar.WEEK_OF_YEAR)-1;
  287. System.out.println("所在第几周:"+typeNum);
  288. //设置本年的周数
  289. firstDate.set(Calendar.WEEK_OF_YEAR, typeNum);
  290. //设置本周的天数,本周定位为SATURDAY
  291. firstDate.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
  292. //设置将本周周日设置为第一天
  293. //firstDate.setFirstDayOfWeek(Calendar.FRIDAY);
  294. //所在周的起始日期
  295. String firstTime = new SimpleDateFormat("yyyy-MM-dd").format(firstDate.getTime());
  296. System.out.println("firstTime:"+firstTime);
  297. }
  298. }
  299.  
  300. /**
  301. *传入一个int类型的时间参数,返回该天属于第几周,星期几,本周开始时间,本周结束时间(周一为开始时间,周日为结束时间)
  302.  **/
  303. public static void a(int x) throws ParseException{
  304. //新建一个日期类型,
  305. Date InputDate = new SimpleDateFormat("yyyyMMdd").parse(String.valueOf(x));
  306. //创建一个日历对象cDate
  307. Calendar cDate = Calendar.getInstance();
  308. //调用日历对象的方法得到本周第一天的值
  309. cDate.setFirstDayOfWeek(Calendar.MONDAY);
  310. //将时间传给日历对象
  311. cDate.setTime(InputDate);
  312. //创建一个日历对象firstDate
  313. Calendar firstDate = Calendar.getInstance();
  314. firstDate.setFirstDayOfWeek(Calendar.MONDAY);
  315. firstDate.setTime(InputDate);
  316.  
  317. Calendar lastDate = Calendar.getInstance();
  318. lastDate.setFirstDayOfWeek(Calendar.MONDAY);
  319. lastDate.setTime(InputDate);
  320.  
  321. if(cDate.get(Calendar.WEEK_OF_YEAR)==1&&cDate.get(Calendar.MONTH)==11){
  322. System.out.println("cDate="+cDate);
  323. firstDate.set(Calendar.YEAR, cDate.get(Calendar.YEAR)+1);
  324. lastDate.set(Calendar.YEAR, cDate.get(Calendar.YEAR)+1);
  325. }
  326. System.out.println("x="+x);
  327. int week = cDate.get(Calendar.DAY_OF_WEEK);
  328. System.out.println(week);
  329. // int typeNum = cDate.get(Calendar.WEEK_OF_YEAR)-1; //返回第40周
  330. int typeNum = cDate.get(Calendar.WEEK_OF_YEAR);//返回41周
  331. System.out.println("所在第几周"+typeNum);
  332.  
  333. firstDate.set(Calendar.WEEK_OF_YEAR, typeNum);
  334. firstDate.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  335. //所在周开始日期
  336. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
  337. System.out.println("sdf="+sdf);
  338. // firstDate.getTime().add(Calendar.DAY_OF_WEEK, -1);
  339. sdf.format(firstDate.getTime());
  340.  
  341. System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(firstDate.getTime()));
  342.  
  343. lastDate.set(Calendar.WEEK_OF_YEAR, typeNum);
  344. lastDate.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
  345. //所在周结束日期
  346. System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(lastDate.getTime()));
  347. }
  348. }

(干货)java中如何根据一个时间获取属于本年那一周,本周的开始时间以及最后一天时间。并且设置起始时间为周6.结束时间为周5的更多相关文章

  1. JAVA中执行JavaScript代码并获取返回值

    JAVA中执行JavaScript代码并获取返回值 场景描述 实现思路 技术要点 代码实现 测试方法 运行结果 改进空间 场景描述 今天在CSDN上偶然看到一个帖子对于一段字符串 “var p=‘xx ...

  2. Java中直接输出一个类的对象

    例如 package com.atguigu.java.fanshe; public class Person { String name; private int age; public Strin ...

  3. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值 public static void testReflect(Object model) throws Exception{ for ...

  4. Java中如何查看一个类依赖的包

    Java中如何查看一个类依赖的包 如图, 我如何知道JSONArray是依赖的哪一个包呢,这里有两个json-lib包?   测试语句:   public static void main(Strin ...

  5. 干货 | Java中获取类名的3种方法!

    获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonicalName() 返回的是更容易理解的类名表示. g ...

  6. java中DelayQueue的一个使用陷阱分析

    最近工作中有接触到DelayQueue,网上搜索资料的时候发现一篇文章谈到DelayQueue的坑.点击打开链接 文中已经总结了遇到坑的地方,还有解决方案.不过我第一眼看一下没弄明白为什么,所以翻了翻 ...

  7. 七、如何在Java中高效检查一个数组是否含有一个值

    如何检查一个数组(非排序的)是否包含特定的值.这是个非常有用或经常被在Java中使用.这是个在Stack Overflow中高得票的问题.在已经高得票的答案中,有许多不同的处理方法,但是时间的复杂度非 ...

  8. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  9. java中只能有一个实例的类的创建

    Java中,如果我们创建一个类,想让这个类只有一个对象,那么我们可以 1:把该类的构造方法设计为private 2:在该类中定义一个static方法,在该方法中创建对象 package test; / ...

随机推荐

  1. renren-fast-vue-动态路由

    在renren-fast-vue项目中,左侧边栏的系统管理这一模块的路由采用的是动态路由的写法, 模块中的路由内容由后台动态生成,在前端开发阶段,采用的是mock模拟数据生成 先是在左侧边栏(view ...

  2. AcWing 139. 回文子串的最大长度 hash打卡

    如果一个字符串正着读和倒着读是一样的,则称它是回文的. 给定一个长度为N的字符串S,求他的最长回文子串的长度是多少. 输入格式 输入将包含最多30个测试用例,每个测试用例占一行,以最多1000000个 ...

  3. 搜索引擎优化 TF_IDF之Java实现

    实现之前,我们要事先说明一些问题: 我们用Redis对数据进行持久化,存两种形式的MAP: key值为term,value值为含有该term的urlkey值为url,value值为map,记录term ...

  4. CSS:CSS margin(外边距)

    ylbtech-CSS:CSS margin(外边距) 1.返回顶部 1. CSS margin(外边距) CSS margin(外边距)属性定义元素周围的空间. margin margin 清除周围 ...

  5. ollydbg调试PE文件

    ollydbg项目地址:http://www.ollydbg.de/ 将exe文件打开到ollydbg项目中,就会直接停到"入口点"地址处,通过View->Memory Ma ...

  6. vs设置html的模板快

    打开vs编辑器,点击文件-->首选项-->用户代码片段 之后选择先对应的编辑器模板 进入里面编写相对应的代码块 之后直接在编辑器中调用.

  7. [已解决]报错Could not install packages due to an EnvironmentError

    安装OpenCV过程中出现错误 代码: pip-conda install -i https://pypi.douban.com/simple/ opencv-python 报错内容如下: Could ...

  8. Spring MVC源码分析(一):ContextLoaderListener的设计与实现

    ContextLoaderListener在我的Spring源码分析(一):从哪里开始看spring源码这篇文章,分析过在web容器,如tomcat,启动web应用时,会通过监听器的方式,通知Serv ...

  9. JS设置浏览器缓存,以及常用函数整理

    //设置缓存 function set_cache(key,value){ if(key=='') return false; localStorage.setItem(key, value); } ...

  10. 看官方文档学习springcloud搭建

    很多java的朋友学习新知识时候去百度,看了之后一知半解,不知道怎么操作,不知道到底什么什么东西,那么作为java码农到底该怎么学习额 一  百度是对还是错呢? 百度是一个万能的工具,当然是对也是错的 ...