Java中Date类型的工具类
package com.mytripod.util;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @author Mytripod
* @create 2018-09-30 21:25
*/
public class DateUtil {
public static String DatePattern = "yyyy-MM-dd";
public static String DateTimePattern = "yyyy-MM-dd HH:mm";
public static Date parseDate(String source) {
return parse(source, DatePattern);
}
public static Date parseDateTime(String source) {
if(source.trim().length() == 10) source = source + " 00:00";
return parse(source, DateTimePattern);
}
public static Date parse(String source, String patten) {
if (StringUtil.isEmpty(source))
return null;
DateFormat format;
try {
format = new SimpleDateFormat(patten);
} catch (Exception e) {
format = new SimpleDateFormat(DateTimePattern);
}
Date date;
try {
date = format.parse(source);
} catch (Exception e) {
date = null;
}
return date;
}
public static String formatDate(Date date) {
return format(date, DatePattern);
}
public static String formatDateTime(Date date) {
return format(date, DateTimePattern);
}
public static String format(Date date, String patten) {
if (date == null)
return "";
DateFormat format;
try {
format = new SimpleDateFormat(patten);
} catch (Exception e) {
format = new SimpleDateFormat(DateTimePattern);
}
return format.format(date);
}
public static String getFormatBeforeOrAfterDate(int offset) {
return getFormatBeforeOrAfterDay(offset, DatePattern);
}
public static String getFormatBeforeOrAfterDateTime(int offset) {
return getFormatBeforeOrAfterDay(offset, DateTimePattern);
}
public static String getFormatBeforeOrAfterDay(int offset, String patten) {
return format(getBeforeOrAfterDay(offset), patten);
}
public static Date getBeforeOrAfterDay(int offset) {
if (offset == 0)
return new Date();
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, offset);
return c.getTime();
}
public static int getYear() {
return getYear(new Date());
}
public static int getMonth() {
return getMonth(new Date());
}
public static int getDayOfWeek() {
return getDayOfWeek(new Date());
}
public static int getDayOfMonth() {
return getDayOfMonth(new Date());
}
public static int getDayOfYear() {
return getDayOfYear(new Date());
}
public static int getYear(Date date) {
return get(date, Calendar.YEAR);
}
public static int getMonth(Date date) {
return get(date, Calendar.MONTH) + 1;
}
public static int getDayOfWeek(Date date) {
int day = get(date, Calendar.DAY_OF_WEEK);
return day == 0 ? 7 : get(date, Calendar.DAY_OF_WEEK) - 1;
}
public static int getDayOfMonth(Date date) {
return get(date, Calendar.DAY_OF_MONTH);
}
public static int getDayOfYear(Date date) {
return get(date, Calendar.DAY_OF_YEAR);
}
private static Calendar getCalendar(Date date) {
Calendar c = Calendar.getInstance();
if (date != null)
c.setTime(date);
return c;
}
private static int get(Date date, int field) {
Calendar c = getCalendar(date);
return c.get(field);
}
public static boolean compareDateTime(String s1, String s2) {
return compare(parseDateTime(s1), parseDateTime(s2));
}
public static boolean compareDateTime(String s, Date date) {
return compare(parseDateTime(s), date);
}
public static boolean compareDateTime(Date date, String s) {
return compare(date, parseDateTime(s));
}
public static boolean compareDate(String s1, String s2) {
return compare(parseDate(s1), parseDate(s2));
}
public static boolean compareDate(String s, Date date) {
return compare(parseDate(s), date);
}
public static boolean compareDate(Date date, String s) {
return compare(date, parseDate(s));
}
public static boolean compare(String s1, String patten1, String s2,
String patten2) {
return compare(parse(s1, patten1), parse(s2, patten2));
}
public static boolean compare(String s, String patten, Date date) {
return compare(parse(s, patten), date);
}
public static boolean compare(Date date, String s, String patten) {
return compare(date, parse(s, patten));
}
public static boolean compare(Date d1, Date d2) {
if (d1 == null || d2 == null)
throw new IllegalArgumentException();
return d1.after(d2);
}
//获取两个日期的间隔天数
public static long getDiffDays (String strdate1,String strdate2){
long diff = 0;
try{
Date date1 = parseDate(strdate1);
Date date2 = parseDate(strdate2);
diff = date2.getTime() - date1.getTime();
diff = diff/1000/60/60/24;
} catch (Exception e) {
e.printStackTrace();
}
return diff;
}
//获取结算周期开始日期:xxxx-xx-26
public static String getFromDate(String date){
return getFromDate(parseDate(date));
}
public static String getFromDate(Date date){
String fromDate = "";
int year = getYear(date);
int month = getMonth(date);
int day = getDayOfMonth(date);
if (day <= 25) {
if(month == 1){
month =12;
year = year-1;
}
else month = month-1;
}
if(month < 10)
fromDate = year + "-0" + month + "-" + "26";
else
fromDate = year + "-" + month + "-" + "26";
return fromDate;
}
//获取结算周期结束日期xxxx-xx-01
public static String getEndDate(Date date){
String monthOfThis = getMonthOfThis(formatDate(date));
String endDate = monthOfThis.substring(0, 8)+"25";
return endDate;
}
public static String getMonthOfThis(String date){
String monthOfThis = "";
Date date_ = parseDate(date);
int year = getYear(date_);
int month = getMonth(date_);
int day = getDayOfMonth(date_);
if (day > 25) {
if(month == 12){
month =1;
year = year + 1;
}
else month = month+1;
}
if(month < 10)
monthOfThis = year + "-0" + month + "-" + "01";
else
monthOfThis = year + "-" + month + "-" + "01";
return monthOfThis;
}
/**
* 获得指定日期的后一天
* @param date
* @return
*/
public static String getNextDay(String date){
Calendar c = Calendar.getInstance();
Date date_ = parseDate(date);
c.setTime(date_);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day+1);
return formatDate(c.getTime());
}
/**
* 获得指定日期的前一天
* @param date
* @return
*/
public static String getlastDay(String date){
Calendar c = Calendar.getInstance();
Date date_ = parseDate(date);
c.setTime(date_);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day-1);
return formatDate(c.getTime());
}
/**
* 获得指定日期的前一个月
* @param date
* @return
*/
public static String getlastMonth(String date){
Calendar c = Calendar.getInstance();
Date date_ = parseDate(date);
c.setTime(date_);
c.add(Calendar.MONTH, -1);
return formatDate(c.getTime());
}
/**
* 获得某日期相差指定天数的日期
* @param date
* @return
*/
public static String getDateByN(String date,int n){
Calendar c = Calendar.getInstance();
Date date_ = parseDate(date);
c.setTime(date_);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day+n);
return formatDate(c.getTime());
}
public static void main(String arg[]){
String dateOfBegin = "2018-09-28";
System.out.println(getMonthOfThis(dateOfBegin));
/* String today = DateUtil.formatDate(new Date());
System.out.println(DateUtil.compareDate(today,dateOfBegin));
System.out.println(getlastDay(formatDate(new Date())));
System.out.println(getlastMonth(formatDate(new Date())));*/
}
/**
* 获得指定日期的前一周
* @param date
* @return
*/
public static String getlastWeek(String date){
Calendar c = Calendar.getInstance();
Date date_ = parseDate(date);
c.setTime(date_);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day-7);
return formatDate(c.getTime());
}
}
Java中Date类型的工具类的更多相关文章
- java中excel导入\导出工具类
1.导入工具 package com.linrain.jcs.test; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import ...
- java中的Arrays这个工具类你真的会用吗
Java源码系列三-工具类Arrays 今天分享java的源码的第三弹,Arrays这个工具类的源码.因为近期在复习数据结构,了解到Arrays里面的排序算法和二分查找等的实现,收益匪浅,决定研读 ...
- java中定义一个CloneUtil 工具类
其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...
- Java中Date类型详解
一.Date类型的初始化 1. Date(int year, int month, int date); 直接写入年份是得不到正确的结果的. 因为java中Date是从1900年开始算的,所以前面的第 ...
- Java中Date类型如何向前向后滚动时间,( 附工具类)
Java中的Date类型向前向后滚动时间(附工具类) 废话不多说,先看工具类: import java.text.SimpleDateFormat; import java.util.Calendar ...
- java中文件操作的工具类
代码: package com.lky.pojo; import java.io.BufferedReader; import java.io.BufferedWriter; import java. ...
- Java中Date类型与String 类型之间的互相转换
Java中String类型和Date类型之间的转换 我们在注册网站的时候,往往需要填写个人信息,如姓名,年龄,出生日期等,在页面上的出生日期的值传递到后台的时候是一个字符串,而我们存入数据库的时候确需 ...
- 在JAVA中自定义连接数据库的工具类
为什么要自定义数据库连接的工具类: 在开发中,我们在对数据库进行操作时,必须要先获取数据库的连接,在上一篇随笔中提到的获取数据库连接的步骤为: 1.定义好4个参数并赋值 2.加载驱动类 3.获取数据库 ...
- Java中的集合Collections工具类(六)
操作集合的工具类Collections Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集 ...
随机推荐
- mybatis基础学习4-插件生成器(根据数据库的表生成文件)
1:安装(根据数据库的表生成文件) 2:在所建项目单击右键输入mybatis如下图 *建项目文件时不用建包和类,插件可以根据数据表自动生成,在配置文件(generatorConfig.xml)里写即可 ...
- poj 2187【旋转卡壳模板】
求平面最远点对 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath& ...
- hdu1115【多边形求重心模板】
1.质量集中在顶点上.n个顶点坐标为(xi,yi),质量为mi,则重心(∑( xi×mi ) / ∑mi, ∑( yi×mi ) / ∑mi) 2.质量分布均匀.这个题就是这一类型,算法和上面的不同. ...
- 洛谷 P4011 孤岛营救问题【bfs】
注意: 一个点可能有多把钥匙,所以把每个点有钥匙的情况状压一下 两个点之间有障碍的情况只给出了单向,存的时候记得存一下反向 b[i][j]表示当前点拥有钥匙的状态,g[x1][y1][x2][y2]表 ...
- Hdu 4465 Candy (快速排列组合+概率)
题目链接: Hdu 4465 Candy 题目描述: 有两个箱子,每个箱子有n颗糖果,抽中第一个箱子的概率为p,抽中另一个箱子的概率为1-p.每次选择一个箱子,有糖果就拿走一颗,没有就换另外一个箱子. ...
- poj 2632 Crashing Robots 模拟
题目链接: http://poj.org/problem?id=2632 题目描述: 有一个B*A的厂库,分布了n个机器人,机器人编号1~n.我们知道刚开始时全部机器人的位置和朝向,我们可以按顺序操控 ...
- 人工智能(七)逻辑Agent
一.逻辑 逻辑是一种可以从中找出结论的形式化语言. 句法(规则)用语言定义句子. 语义定义句子的含义.定义一个句子的真假性. 二.蕴含 即一个事情逻辑上是另一个事情的必然结果:KB ╞ α 知识库KB ...
- time模块,datetime模块
time模块 time模块是包含各方面对时间操作的函数. 尽管这些常常有效但不是所有方法在任意平台中有效. 时间相关的操作,时间有三种表示方式: 时间戳 1970年1月1日 ...
- Windows下的一个Nginx 批处理命令行控制台
其实作用很简单,就是为了少输入几个字母,完成对Nginx的控制而已,同时也算是练习了一把bat批处理吧. @echo off&color e&Title Nginx 命令行控制台 cl ...
- APP崩溃处理
以前经常遇到APP内部异常情况下的Exception,最初是通过try catch这样的方式处理:但是APP上线后,用户在特地的情况下触发 了某些Exception,当然这些Exception从理论和 ...