package cn.com.icreate.util;

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Date;

import java.util.List;

/** * 时间相关操作 * *@author Satan * */

public class DateUtils {

public static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

/** * 得到一个日期的时间戳 */

public long getTimeStampByDate(String date) {

Date cdate = null;

try {

cdate = simpleDateFormat.parse(date);

} catch (ParseException e) {

e.printStackTrace();

}

return cdate.getTime();

}

/** * 返回当前时间的时间戳 *@return */

public static String getCurrentStamp(){

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");

Date date = new Date();

String datelong = simpleDateFormat.format(date);

return datelong;

}

/** * 将日期转化为字符串 * */

public String getDateStringByDate(Date date) {

String cdate = simpleDateFormat.format(date);

return cdate;

}

/** * 返回该日期的后n天 YYYY-MM-DD *@param s YYYY-MM-DD *@param n int *@return YYYY-MM-DD */

public String addDay(String s, int n) {

try {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cd = Calendar.getInstance();

cd.setTime(sdf.parse(s));

cd.add(Calendar.DATE, n);// 增加一天

return sdf.format(cd.getTime());

} catch (Exception e) {

return null;

}

}

/** * 根据日期转为时间戳进行比较,并返回差值 * */

public long getTimeDifference(String date, String preDate) {

long datestamp = getTimeStampByDate(date);

long predatestamp = getTimeStampByDate(preDate);

return datestamp - predatestamp;

}

/** * 计算两个日期之间相差的天数 * *@param smdate * 较小的时间 *@param bdate * 较大的时间 *@return 相差天数 *@throws ParseException */

public int daysBetween(String smdate, String bdate) {

Date smalldate=new Date();

try {

smalldate = simpleDateFormat.parse(smdate);

} catch (ParseException e) {

}

Date bigdate=new Date();

try {

bigdate = simpleDateFormat.parse(bdate);

} catch (ParseException e) {

}

Calendar cal = Calendar.getInstance();

cal.setTime(smalldate);

long time1 = cal.getTimeInMillis();

cal.setTime(bigdate);

long time2 = cal.getTimeInMillis();

long between_days = (time2 - time1) / (1000 * 3600 * 24);

int i=Integer.parseInt(String.valueOf(between_days));

return i;

}

/** * * 判断日期是否为周六日 * 如果为周六日,则返回1,否则返回0 *@param date *@return */

public int isWeekend(String date) {

int is_weekend = 0;

Date bdate = null;

try {

bdate = simpleDateFormat.parse(date);

} catch (ParseException e) {

e.printStackTrace();

}

Calendar cal = Calendar.getInstance();

cal.setTime(bdate);

// 如果为周六日,则返回1,否则返回0

if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY

|| cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {

is_weekend = 1;

}

return is_weekend;

}

/** * 获取当前日期 *@return */

public String getNowDate(){

Date date=new Date();

return getDateStringByDate(date);

}

public String dateForString(String time){

if(time!=null&&!time.equals("")){

Date cdate = null;

try {

cdate = simpleDateFormat.parse(time);

} catch (ParseException e) {

e.printStackTrace();

}

time=getDateStringByDate(cdate);

}

return time;

}

public String getNowYear(){

return getNowDate().substring(0,4);

}

/** * 获取当前周开始日期(周一) *@param date YYYY-MM-DD *@return YYYY-MM-DD *@throws ParseException */

public String getWeekStart(String date) throws ParseException{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cd = Calendar.getInstance();

cd.setTime(sdf.parse(date));

int day = cd.get(Calendar.DAY_OF_WEEK)-1;

if(day == 1){

} else if(day == 2){

cd.add(Calendar.DATE, -1);

} else if(day == 3){

cd.add(Calendar.DATE, -2);

} else if(day == 4){

cd.add(Calendar.DATE, -3);

} else if(day == 5){

cd.add(Calendar.DATE, -4);

} else if(day == 6){

cd.add(Calendar.DATE, -5);

} else if(day == 0){

cd.add(Calendar.DATE, -6);

}

return sdf.format(cd.getTime());

}

/** * 获取当前周结束日期(周日) *@param date YYYY-MM-DD *@return YYYY-MM-DD *@throws ParseException */

public String getWeekEnd(String date) throws ParseException{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cd = Calendar.getInstance();

cd.setTime(sdf.parse(date));

int day = cd.get(Calendar.DAY_OF_WEEK)-1;

if(day == 1){

cd.add(Calendar.DATE, 6);

} else if(day == 2){

cd.add(Calendar.DATE, 5);

} else if(day == 3){

cd.add(Calendar.DATE, 4);

} else if(day == 4){

cd.add(Calendar.DATE, 3);

} else if(day == 5){

cd.add(Calendar.DATE, 2);

} else if(day == 6){

cd.add(Calendar.DATE, 1);

} else if(day == 0){

}

return sdf.format(cd.getTime());

}

/* * 判断年份是否是闰年 */

public boolean isRunYear(String year){

if(Integer.valueOf(year) % 4 == 0 && Integer.valueOf(year) % 100 != 0 || Integer.valueOf(year) % 400 == 0){

return true;

}else{

return false;

}

}

/* * 根据年份和月份计算天数 */

public int getDaysByYearAndMonth(int year,int month){

if(month==2){

if (((year % 100 == 0) && (year % 400 == 0))

|| ((year % 100 != 0) && (year % 4 == 0))) {

return 29;

}else {

return 28;

}

}else if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12 ) {

return 31;

}else if(month==4 || month==6 || month==9 || month==11) {

return 30;

}

return 0;

}

/** * 获取三周前开始日期(周一) *@param date YYYY-MM-DD *@return YYYY-MM-DD *@throws ParseException */

public String getBeforeWeekStart(String date) throws ParseException{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cd = Calendar.getInstance();

cd.setTime(sdf.parse(date));

int day = cd.get(Calendar.DAY_OF_WEEK)-1;

if(day == 1){

cd.add(Calendar.DATE, -21);

} else if(day == 2){

cd.add(Calendar.DATE, -22);

} else if(day == 3){

cd.add(Calendar.DATE, -23);

} else if(day == 4){

cd.add(Calendar.DATE, -24);

} else if(day == 5){

cd.add(Calendar.DATE, -25);

} else if(day == 6){

cd.add(Calendar.DATE, -26);

} else if(day == 0){

cd.add(Calendar.DATE, -27);

}

return sdf.format(cd.getTime());

}

/** * 获取上上周开始日期(周一) *@param date YYYY-MM-DD *@return YYYY-MM-DD *@throws ParseException */

public String getBeforePWeekStart(String date) throws ParseException{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cd = Calendar.getInstance();

cd.setTime(sdf.parse(date));

int day = cd.get(Calendar.DAY_OF_WEEK)-1;

if(day == 1){

cd.add(Calendar.DATE, -14);

} else if(day == 2){

cd.add(Calendar.DATE, -15);

} else if(day == 3){

cd.add(Calendar.DATE, -16);

} else if(day == 4){

cd.add(Calendar.DATE, -17);

} else if(day == 5){

cd.add(Calendar.DATE, -18);

} else if(day == 6){

cd.add(Calendar.DATE, -19);

} else if(day == 0){

cd.add(Calendar.DATE, -20);

}

return sdf.format(cd.getTime());

}

/** * 获取上周开始日期(周一) *@param date YYYY-MM-DD *@return YYYY-MM-DD *@throws ParseException */

public String getBeforeLastWeekStart(String date) throws ParseException{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cd = Calendar.getInstance();

cd.setTime(sdf.parse(date));

int day = cd.get(Calendar.DAY_OF_WEEK)-1;

if(day == 1){

cd.add(Calendar.DATE, -7);

} else if(day == 2){

cd.add(Calendar.DATE, -8);

} else if(day == 3){

cd.add(Calendar.DATE, -9);

} else if(day == 4){

cd.add(Calendar.DATE, -10);

} else if(day == 5){

cd.add(Calendar.DATE, -11);

} else if(day == 6){

cd.add(Calendar.DATE, -12);

} else if(day == 0){

cd.add(Calendar.DATE, -13);

}

return sdf.format(cd.getTime());

}

/** * 判断是否为周一 *@param date *@return *@throws ParseException */

public Boolean isMonday(String date) throws ParseException{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cd = Calendar.getInstance();

cd.setTime(sdf.parse(date));

int day = cd.get(Calendar.DAY_OF_WEEK)-1;

if(day == 1){

return true;

} else

return false;

}

/** * 设置默认时间(三周前的星期一开始到三周前的星期日 *@return */

public List setDefaultTime(){

DateUtils du = new DateUtils();

String nowTime = du.getNowDate();

String defaultTimeStart = null;

String defaultTimeEnd = null;

String lastTimeStart = null;

String lastTimeEnd = null;

String pTimeStart = null;

String pTimeEnd = null;

List timeList = new ArrayList();

try {

//上周一

lastTimeStart = du.getBeforeLastWeekStart(nowTime);

timeList.add(lastTimeStart);

//上周日

lastTimeEnd = du.getWeekEnd(lastTimeStart);

timeList.add(lastTimeEnd);

//上上周一

pTimeStart = du.getBeforePWeekStart(nowTime);

timeList.add(pTimeStart);

//上上周日

pTimeEnd = du.getWeekEnd(pTimeStart);

timeList.add(pTimeEnd);

//前三周一

defaultTimeStart = du.getBeforeWeekStart(nowTime);

timeList.add(defaultTimeStart);

//前三周日

defaultTimeEnd = du.getWeekEnd(defaultTimeStart);

timeList.add(defaultTimeEnd);

} catch (ParseException e) {

e.printStackTrace();

}

return timeList;

}

/** * 判断当前时间是否小于传入时间 *@param date1 *@return boolean */

public static boolean compare_date(String date1) {

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

try {

Date dt1 = df.parse(date1);

Date dt2 = new Date();

if (dt2.getTime() > dt1.getTime()) {

return true;

}

} catch (Exception exception) {

exception.printStackTrace();

}

return false;

}

/** * 判断日期为该年的第几周 *@return */

public static int isWeek(String today) throws ParseException{

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

Date date = format.parse(today);

Calendar calendar = Calendar.getInstance();

calendar.setFirstDayOfWeek(Calendar.MONDAY);

calendar.setTime(date);

int num=(calendar.get(Calendar.WEEK_OF_YEAR));

return num;

}

}

java dateutils详解_java DateUtils相关推荐

  1. java condition详解_Java使用Condition控制线程通信的方法实例详解

    Java使用Condition控制线程通信的方法实例详解 发布于 2020-4-20| 复制链接 摘记: 本文实例讲述了Java使用Condition控制线程通信的方法.分享给大家供大家参考,具体如下 ...

  2. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...

  3. java技术详解_Java反射技术详解及实例解析

    前言 相信很多人都知道反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的,比如最初的很多注解框架,后来因为java反射影响性能,所以被运行时注解APT替 ...

  4. java list详解_Java 中 list 用法案例详解

    LIST是个容器接口可以理解为动态数组,传统数组必须定义好数组的个数才可以使用,而容器对象无须定义好数组下标总数,用add()方法即可添加新的成员对象,他可以添加的仅仅只能为对象,不能添加基本数据类型 ...

  5. java unsafe 详解_Java CAS操作与Unsafe类详解

    一.复习 计算机内存模型,synchronized和volatile关键字简介 二.两者对比 sychronized和volatile都解决了内存可见性问题 不同点: (1)前者是独占锁,并且存在者上 ...

  6. java pattern详解_JAVA正则表达式:Pattern类与Matcher类详解

    以下我们就分别来看看这两个类: 一.捕获组的概念 捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的.例如,在表达式 ((A)(B(C)))中,存在四个这样的组: 1        ((A) ...

  7. java while详解_Java while循环-Java while-嗨客网

    Java while教程 在 Java语言while语句详解 语法 while(condition){ //do something } 参数 参数 描述 while while 条件判断关键字 co ...

  8. java classpath详解_java Classpath全解(转)

    java Classpath全解(转)[@more@]java 的新入门者对classpath往往比较困惑,为何在开发环境中能运行的东东出去就不好,或在外面运行的东东挺溜的进了开发环境就死菜,烦死了! ...

  9. java dateutils详解_java中DateUtils时间工具类详解

    package com.example.administrator.myapp; import java.text.ParseException; import java.text.SimpleDat ...

  10. 位运算符Java与详解_java位运算符详解

    java位运算符详讲 一.位运算符分类    java中位运算符主要有:按位与&.按位或|.按位非~.按位异或^. 在使用时,需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示.二. ...

最新文章

  1. elasticsearch插件(4)
  2. oracle分区属于什么知识,详细讲解Oracle表分区的相关概念及其优点
  3. postman发送post请求,服务器日志确保GET请求错误“ PageNotFound:208 Request method ‘GET‘ not supported”
  4. Java:集合for高级循环遍历
  5. JavaScript 基础知识 - BOM篇
  6. Mono for Android 篇二 使用Spinner 实现下拉列表读取Browser.BookmarksUri
  7. 章国锋:视觉SLAM最新观点分享
  8. java update 8_版本任你发,我用Java 8!JDK的更新,改变了哪些你写代码的方式?...
  9. echarts中toolbox位置_echarts toolbox 扩展
  10. eclipse中ctrl+h默认打开是JavaSearch,怎么设置成默认打开是FileSearch
  11. Use // eslint-disable-next-line to ignore the next line.解决办法
  12. Bailian4111 判断游戏胜者-Who Is the Winner【文本处理】
  13. iOS人脸识别(检测)
  14. Unity + Rider + EmmyLua使用中遇到的问题
  15. 代价敏感错误率与代价曲线
  16. c语言中专业英文词汇的意思,C语言常见英文词汇表
  17. 贝尔商道赚钱思维36道第22道:船翻友尽、相忘江湖
  18. excel自动换行_Excel如何自动换行?
  19. 《科研诚信与学术规范》参考答案最新版
  20. 关机整蛊小程序(c语言实现)

热门文章

  1. Ajax文件上传(formdata)
  2. VS Code 下载/导入 Python 库
  3. C++ 常用代码大全
  4. Web应用小案例:猜数小游戏
  5. MediaCodec解码aac
  6. 计算机用硬盘做缓存,用SSD固态硬盘做缓存加速怎么样实测
  7. VIM总结之一:VIM编辑器常用命令详解
  8. H3C IPsec穿越nat实验
  9. a form 出口享惠情况_关于“出口享惠情况”如何填报?
  10. Cadence Orcad Capture原理图导出PDF图文视频教程