java dateutils详解_java DateUtils
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相关推荐
- java condition详解_Java使用Condition控制线程通信的方法实例详解
Java使用Condition控制线程通信的方法实例详解 发布于 2020-4-20| 复制链接 摘记: 本文实例讲述了Java使用Condition控制线程通信的方法.分享给大家供大家参考,具体如下 ...
- java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解
废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...
- java技术详解_Java反射技术详解及实例解析
前言 相信很多人都知道反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的,比如最初的很多注解框架,后来因为java反射影响性能,所以被运行时注解APT替 ...
- java list详解_Java 中 list 用法案例详解
LIST是个容器接口可以理解为动态数组,传统数组必须定义好数组的个数才可以使用,而容器对象无须定义好数组下标总数,用add()方法即可添加新的成员对象,他可以添加的仅仅只能为对象,不能添加基本数据类型 ...
- java unsafe 详解_Java CAS操作与Unsafe类详解
一.复习 计算机内存模型,synchronized和volatile关键字简介 二.两者对比 sychronized和volatile都解决了内存可见性问题 不同点: (1)前者是独占锁,并且存在者上 ...
- java pattern详解_JAVA正则表达式:Pattern类与Matcher类详解
以下我们就分别来看看这两个类: 一.捕获组的概念 捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的.例如,在表达式 ((A)(B(C)))中,存在四个这样的组: 1 ((A) ...
- java while详解_Java while循环-Java while-嗨客网
Java while教程 在 Java语言while语句详解 语法 while(condition){ //do something } 参数 参数 描述 while while 条件判断关键字 co ...
- java classpath详解_java Classpath全解(转)
java Classpath全解(转)[@more@]java 的新入门者对classpath往往比较困惑,为何在开发环境中能运行的东东出去就不好,或在外面运行的东东挺溜的进了开发环境就死菜,烦死了! ...
- java dateutils详解_java中DateUtils时间工具类详解
package com.example.administrator.myapp; import java.text.ParseException; import java.text.SimpleDat ...
- 位运算符Java与详解_java位运算符详解
java位运算符详讲 一.位运算符分类 java中位运算符主要有:按位与&.按位或|.按位非~.按位异或^. 在使用时,需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示.二. ...
最新文章
- elasticsearch插件(4)
- oracle分区属于什么知识,详细讲解Oracle表分区的相关概念及其优点
- postman发送post请求,服务器日志确保GET请求错误“ PageNotFound:208 Request method ‘GET‘ not supported”
- Java:集合for高级循环遍历
- JavaScript 基础知识 - BOM篇
- Mono for Android 篇二 使用Spinner 实现下拉列表读取Browser.BookmarksUri
- 章国锋:视觉SLAM最新观点分享
- java update 8_版本任你发,我用Java 8!JDK的更新,改变了哪些你写代码的方式?...
- echarts中toolbox位置_echarts toolbox 扩展
- eclipse中ctrl+h默认打开是JavaSearch,怎么设置成默认打开是FileSearch
- Use // eslint-disable-next-line to ignore the next line.解决办法
- Bailian4111 判断游戏胜者-Who Is the Winner【文本处理】
- iOS人脸识别(检测)
- Unity + Rider + EmmyLua使用中遇到的问题
- 代价敏感错误率与代价曲线
- c语言中专业英文词汇的意思,C语言常见英文词汇表
- 贝尔商道赚钱思维36道第22道:船翻友尽、相忘江湖
- excel自动换行_Excel如何自动换行?
- 《科研诚信与学术规范》参考答案最新版
- 关机整蛊小程序(c语言实现)