java 星期几、得周一、得周日、上周、下周、相差、日期工具类

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 

import org.apache.commons.lang3.StringUtils;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;/*** 日期工具类** @author silence* @version 2017/12/24*/
public class DateUtil {private static final String YYYY_MM_DD = "yyyy-MM-dd";public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");public static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss");public static final int DAYS_OF_ONE_WEEK = 7;/*** 查当前日期是一周中的第几天、星期几* @return*/public static long getWhicthDay(Date today){Calendar cal = Calendar.getInstance();cal.setTime(today);// 1=Sunday,2=Monday,,,7=Saturday。return cal.get(Calendar.DAY_OF_WEEK);}/*** 判断日期是否相等 年/月/日相等 就是相等了** @param day1* @param day2* @return*/public static boolean isDateEqualToday(Date day1, Date day2) {return day1.getYear() == day2.getYear()&& day1.getMonth() == day2.getMonth()&& day1.getDay() == day2.getDay();}/*** 计算距离baseDate 若干天的 日期* days=2 表示2天后* days=-1 一天前** @param baseDate 日期 null 表示当前日期* @param days     日期* @return*/public static Date daysBetweenWeeks(Date baseDate, int days) {Calendar c = Calendar.getInstance();if (baseDate != null)c.setTime(baseDate);c.add(Calendar.DAY_OF_MONTH, days);return c.getTime();}public static java.sql.Date fromUtilDate(Date utilDate) {java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());return sqlDate;}//    public static Date lastMonday() {
//        Date _7daysBefore = daysBetweenWeeks(null, -DAYS_OF_ONE_WEEK);
//        return mondayOfThisWeek(_7daysBefore);
//    }
//
//    public static Date lastSunday() {
//        Date _7daysBefore = daysBetweenWeeks(null, -DAYS_OF_ONE_WEEK);
//        return sundayOfThisWeek(_7daysBefore);
//    }/*** 获取某个日期对应的 日期 的周一** @param theDate 某个日期 null的话,表示当前日期* @return Date*/public static Date mondayOfThisWeek(Date theDate) {Calendar c = Calendar.getInstance();if (theDate != null) c.setTime(theDate);c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 获取 周一return c.getTime();}/*** 获取某个日期对应的 日期 的周日** @param theDate 某个日期 null的话,表示当前日期*                获取当前日期的周7,注意 日历获取的周期是*                周日,1,2,3,4,5,6  不是中国传统的*                1,2,3,4,5,6,周日*                所以要加7* @return Date*/public static Date sundayOfThisWeek(Date theDate) {Calendar c = Calendar.getInstance();if (theDate != null) c.setTime(theDate);c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);               // 获取 周日c.add(Calendar.DAY_OF_MONTH, 7);     // 获取 中国意义上的 周日return c.getTime();}/*** 获取某个日期对应的 日期 的周日** @param theDate 某个日期 null的话,表示当前日期*                获取当前日期的周7,注意 日历获取的周期是*                周日,1,2,3,4,5,6  不是中国传统的*                1,2,3,4,5,6,周日*                所以要加7* @return Date*/public static Date getSundayOfThisWeek(Date theDate) {Calendar c = Calendar.getInstance();if (theDate != null) c.setTime(theDate);c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);               // 获取 周日c.add(Calendar.DAY_OF_MONTH, 7);     // 获取 中国意义上的 周日if(getWhicthDay(theDate)==1){c.add(Calendar.DATE, c.getFirstDayOfWeek() - 8);}return c.getTime();}/*** 字符串转换为日期类型** @param dateString* @return*/public static Date stringToDate(String dateString) {try {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sdf.parse(dateString);} catch (ParseException e) {System.out.println(e.getMessage());}return null;}public static String dateToString(Date date) {try {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sdf.format(date);} catch (Exception e) {System.out.println(e.getMessage());}return date.toString();}/*** YYYY:MM:DD hh:mm:ss --->YYYY:MM:DD** @param date* @return*/public static Date timeToDate(Date date) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String s = sdf.format(date);try {return sdf.parse(s);} catch (ParseException e) {e.printStackTrace();}return null;}/*** 获取某天当前周的周一* @param date* @return*/public static Date getThisWeekMonday(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(date);// 获得当前日期是一个星期的第几天int dayWeek = cal.get(Calendar.DAY_OF_WEEK);if (1 == dayWeek) {cal.add(Calendar.DAY_OF_MONTH, -1);}// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一cal.setFirstDayOfWeek(Calendar.MONDAY);// 获得当前日期是一个星期的第几天int day = cal.get(Calendar.DAY_OF_WEEK);// 根据日历的规则,当前日期减去 星期几与一个星期第一天的差值  即可计算当前周期第一天cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);return cal.getTime();}/*** 获取某天上周一的日期** @param date* @return*/public static Date geLastWeekMonday(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(getThisWeekMonday(date));cal.add(Calendar.DATE, -7);return cal.getTime();}/*** 获取某天下周一的日期** @param date* @return*/public static Date getNextWeekMonday(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(getThisWeekMonday(date));cal.add(Calendar.DATE, 7);return cal.getTime();}/*** 获取某天的前后几天的日期** @param date* @param day  :正数表示后几天,负数表示前几天* @return*/public static Date addDay(Date date, int day) {Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.DATE, day);return cal.getTime();}/*** 添加时间** @param date* @param time hh:mm:ss* @return*/public static Date addTime(Date date, String time) {if (StringUtils.isEmpty(time)) return date;Calendar cd = Calendar.getInstance();cd.setTime(date);String[] times = time.split(":");//eg:["01","00","00"]int[] timeUnit = {Calendar.HOUR, Calendar.MINUTE, Calendar.SECOND};if (date != null) {for (int i = 0; i < times.length; i++) {cd.add(timeUnit[i], Integer.valueOf(times[i]));}}return cd.getTime();}}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果前CEO斯卡利变身创业导师:欲寻下个乔布斯

乔布斯和约翰斯卡利 导语&#xff1a;国外媒体今天撰文称&#xff0c;苹果前CEO约翰斯卡利(John Sculley)虽然早已离开苹果&#xff0c;但仍然活跃在科技行业。他现在将目光转向了医疗科技领域&#xff0c;希望从中挖掘出下一个乔布斯。 以下为文章全文&#xff1a; 下一个乔布…

记录一次kernel内存泄漏的查找定位过程

Bug描述&#xff1a;压力测试一个小工程时发现内存逐渐减少&#xff0c;10个小时后出现OOM Bug定位过程&#xff1a; 对整个工程模块进行分解&#xff0c;逐步缩小范围&#xff0c;由于整个工程包括几个相对独立的小模块&#xff0c;而整个工程采用单进程多线程的模型&#x…

python3.6+selenium_Testsuits测试套件

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2018/11/23 11:23 # File : unittest_test2_2.pyTestsuits测试套件 import unittest from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.commo…

PBRT笔记(7)——反射模型

基础术语 表面反射可以分为4大类&#xff1a; diffuse 漫反射glossy specular 镜面反射高光perfect specular 完美反射高光retro-reflective distributions 后反射分布几何坐标系以及工具函数 pbrt中的反射是在反射坐标系中进行计算的。坐标系由着色点处法向量与两个切向量组成…

Linux grep命令、Linux cd命令、Linux pwd命令

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Linux grep命令用于查找文件里符合条件的字符串。 grep指令用于查找内容包含指定的范本样式的文件&#xff0c;如果发现某文件的内容符…

忠告:创业公司与大公司正面竞争易死

移动互联网的兴起给了创业公司足够的发展空间&#xff0c;也提供了一个相对公平的竞争平台。但机遇永远与挑战并存。   对于初创公司&#xff0c;最大的挑战莫过于在移动互联网大潮中生存下来。IDG资本合伙人高翔认为&#xff0c;初创公司不要和大公司正面竞争&#xff0c;应…

海康萤石摄像机远程监控机制分析

背景介绍 有一个远程监控的需求&#xff0c;正常情况下采用服务器转发视频流对服务器要求很高&#xff0c;所以p2p看似是一个比较好的方案&#xff0c;但是p2p打洞却不是一件容易的事情&#xff0c;所以打算分析下海康萤石摄像机远程监控的机制&#xff0c;是否采用了p2p的方式…

实体类中存在List集合,怎么在xml文件中,对应

public class AppointmentDTO {/**订单id**/private String appointmentId;/**订单里面的商品list**/private List<CommodityShowInAppoinment> list;/**订单里面的商品数量**/private Integer count;/**订单实际付款的金额**/private Float totalMoney; } 怎么弄呢&…

git管理复杂项目代码

背景 我初学前端的时候接触git&#xff0c;那时候只要会add/commit什么的就好了&#xff0c;网上的教程大多都停留在从头到尾一个个介绍git的命令&#xff0c;关于各种用法&#xff0c;特别是多个分支来回交叉冲突的实际处理&#xff0c;很少有这方面的介绍&#xff0c;经过很多…

实现一个通用的生产者消费者队列(c语言版本)

背景&#xff1a;笔者之前一直从事嵌入式音视频相关的开发工作&#xff0c;对于音视频的数据的处理&#xff0c;生产者消费者队列必不可少&#xff0c;而如何实现一个高效稳定的生产者消费者队列则十分重要&#xff0c;不过按照笔者从业的经验&#xff0c;所看到的现象&#xf…

美媒:小米新浪达成合作 采取行动对抗腾讯

来自美媒的报道称&#xff0c;两家中国最具发展潜力的科技公司&#xff0c;新浪和小米将会共同合作&#xff0c;结合各自的通信应用程序来共同对抗移动通信的挑战&#xff0c;尤其是拥有2亿用户的强劲对手微信。 来自中国的消息称&#xff0c;这次新浪与小米的合作将会涉及到新…

Linux expr命令、Linux wc命令、Linux let 命令

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 expr命令是一个手工命令行计数器&#xff0c;用于在UNIX/LINUX下求表达式变量的值&#xff0c;一般用于整数值&#xff0c;也可用于字符…

【English】六、am,is,are 分别用在什么地方

is&#xff1a;第三人称单数am&#xff1a;第一人称单数are&#xff1a;第二人称单数&#xff0c;第一、二、三人称的复数 用于第一人称, I am ......(我是.......)用于第三人称, He is ......(他是......) 或She is ......(她是......), It is ......(它是.......)用于第二人…

误删了公司数据库,但我还是活下来了

专栏 | 九章算法 网址 | www.jiuzhang.com 上周我与同事们进行了一次关于职业生涯中搞砸了一些事情的简短谈话。这确实会沦为他人笑柄&#xff0c;却更给我们带来了珍贵的教训。重要的是&#xff0c;我们应该分享那些曾经的错误&#xff0c;这样其他人就可以从其中学习。下文是…

改良程序的11技巧

有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点&#xff0c;程序你只写一次&#xff0c;但以后会无数次的阅读。当你第二天回头来看你的代码时&#xff0c;你就要开始阅读它了。当你把代码拿给其他人看时&#xff0c;他必须阅读你的代码。因此&#…

历时四年,给Google提交的Android Framework Bug终于被Fixed了

历时四年&#xff0c;Google终于修复了一个我发现的Android Framework Bug 2014年在做一个Android终端设备开发过程中&#xff0c;发现了一个Android Framework层的Bug&#xff0c;给Google提交了issue和解决方案&#xff0c;和外界传言一致Google一般不太在意个人开发者提交的…

Linux ping命令、Linux kill命令、Linux logname命令、 Linux logout命令

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Linux ping命令用于检测主机。 执行ping指令会使用ICMP传输协议&#xff0c;发出要求回应的信息&#xff0c;若远端主机的网络功能没有…

前端布局神器display:flex

2009年&#xff0c;W3C提出了一种新的方案--Flex布局&#xff0c;可以简便、完整、响应式地实现各种页面布局。目前已得到所有现在浏览器的支持。 flex浏览器支持一、Flex布局是什么&#xff1f; Flex是Flexible Box的缩写&#xff0c;翻译成中文就是“弹性盒子”&#xff0c;用…

bind简单转发实验

2019独角兽企业重金招聘Python工程师标准>>> *主配置文件内容// [rootlocalhost /]# cat /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a local…

数据结构:块状链表

一、概述 有时候我们需要设计这样一种数据结构&#xff1a;它能快速在要求位置插入或者删除一段数据。先考虑两种简单的数据结构&#xff1a;数组和链表。数组的优点是能够在O(1)的时间内找到所要执行操作的位置&#xff0c;但其缺点是无论是插入或删除都要移动之后的所有数据&…