您的位置:首页 > 编程语言 > Java开发

Java工具类之Date日期操作工具类

2016-07-17 21:13 295 查看
  日期操作是日常开发当中最常见的操作之一,故开放下自己封装的常用工具操作方法。

package com.zel.yuqing.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {
public static int dateStringLength = "yyyy-MM-dd HH:mm:ss".length();

public SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");

public SimpleDateFormat yyyyMMddHHmm = new SimpleDateFormat(
"yyyy-MM-dd HH:mm");

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

public static SimpleDateFormat yyyyMMddHH_NOT_ = new SimpleDateFormat(
"yyyyMMdd");

public static long DATEMM = 24 * 60 * 60;

public static long getTimeNumberToday() {
Date date = new Date();
String str = yyyyMMdd.format(date);
try {
date = yyyyMMdd.parse(str);
return date.getTime() / 1000L;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}

public static String getTodateStringWithSplit() {
Date date = new Date(System.currentTimeMillis());
String str = yyyyMMdd.format(date);
return str;
}

public static String getTodateString() {
Date date = new Date(System.currentTimeMillis());
String str = yyyyMMddHH_NOT_.format(date);
return str;
}

public static String getYesterdayString() {
Date date = new Date(System.currentTimeMillis() - DATEMM * 1000L);
String str = yyyyMMddHH_NOT_.format(date);
return str;
}
/**
* 取得昨天的最小Date对象值
* @return
*/
public static Date getYesterdayMinDate() {
String yesterday = DateUtil.getYesterdayString();
int year = Integer.parseInt(yesterday.substring(0, 4).toString());
int month = Integer.parseInt(yesterday.substring(4, 6).toString());
int dayNumber = Integer.parseInt(yesterday.substring(6, 8).toString());
long l = DateUtil.getMinMsOfDate(year, month, dayNumber);
return new Date(l);
}

public static Date dd = null;

public static long getTimeLong(int years) {
dd = new Date();
dd.setYear(dd.getYear() + years);
return dd.getTime();
}

public static long getLongByDate() {
return new Date().getTime();
}

public Date getDateByString(String date_str) throws Exception {
date_str = date_str.trim();
if (date_str.length() == dateStringLength && date_str.startsWith("20")) {
return yyyyMMddHHmmss.parse(date_str);
} else {
throw new Exception();
}
}

/**
* 将Date值格式化成指定的字符串
*
* @param date
* @return
* @throws Exception
*/
public String getStringByDate(Date date) throws Exception {
return yyyyMMddHHmmss.format(date);
}

String temp_time_string = null;
String temp_time = null;

/**
* 解析一个字符串成为一个Date类型的值
*
* @param publishTimeString
* @return
* @throws ParseException
*/
public Date getDateByNoneStruture4Sina(String publishTimeString)
throws ParseException {
if (publishTimeString.contains("\"")) {
publishTimeString = publishTimeString.trim().substring(1,
publishTimeString.trim().length() - 1);
}
if (publishTimeString.contains("月")) {
String temp_date = "" + (1900 + new Date().getYear());
temp_time = publishTimeString.substring(0, publishTimeString
.indexOf("月"));
if (temp_time.length() == 1) {
temp_time = "0" + temp_time;
}
temp_date = temp_date + "-" + temp_time;
temp_time = publishTimeString.substring(publishTimeString
.indexOf("月") + 1, publishTimeString.indexOf("日"));
if (temp_time.length() == 1) {
temp_time = "0" + temp_time;
}
temp_date = temp_date + "-" + temp_time;
temp_time = publishTimeString.substring(publishTimeString
.indexOf(" ") + 1, publishTimeString.length());
temp_date = temp_date + " " + temp_time + ":00";
// System.out.println("时间---"+temp_time);
// System.out.println("temp_date----"+temp_date);
return yyyyMMddHHmmss.parse(temp_date);
} else if (publishTimeString.contains("今天")) {
publishTimeString = publishTimeString.substring(
publishTimeString.indexOf(" "), publishTimeString.length())
.trim();
publishTimeString += ":00";
temp_time = yyyyMMddHHmmss.format(new Date());
temp_time = temp_time.substring(0, temp_time.indexOf(" "));
publishTimeString = temp_time + " " + publishTimeString;

return yyyyMMddHHmmss.parse(publishTimeString);
} else if (publishTimeString.contains("分钟")) {
temp_time = publishTimeString.substring(0, publishTimeString
.indexOf('分'));
// 通过化成ms后的相减操作来完成减多少minutes的操作
return new Date(getLongByDate() - Integer.parseInt(temp_time) * 60
* 1000);
} else if (publishTimeString.contains("-")) {
String temp_all = null;
if (publishTimeString.length() == "yyyy-mm-dd hh:mm".length()) {
publishTimeString = publishTimeString + ":00";
return yyyyMMddHHmmss.parse(publishTimeString);
} else {
temp_time = publishTimeString.split(" ")[0];
String[] temp_array = temp_time.split("-");
for (String temp : temp_array) {
if (temp.length() == 4) {
temp_all = temp;
} else if (temp.length() == 1) {
temp_all += ("-0" + temp);
} else {
temp_all += ("-" + temp);
}
}
temp_all += " " + publishTimeString.split(" ")[1] + ":00";
}
return yyyyMMddHHmmss.parse(temp_all);
} else if (publishTimeString.contains("秒")) {
return new Date();
} else {
return new Date();
}
}

public static String dateLongToMMHHssString(Long time) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(time);
return format.format(cal.getTime());
}

public String formatLongToMMHHssString(String time) {
try {
return yyyyMMddHHmmss.format(Long.parseLong(time));
} catch (Exception e) {
return "";
}
}

/**
* 得到传入的date的long型值对应的指定format格式的字符串
*
* @param time
* @return
*/
public String formatDtString(long time) {
try {
return yyyyMMddHH_NOT_.format(time);
} catch (Exception e) {
return "";
}
}

// 不可大数据量使用
public static String getServeralDaysAgo(int daysNumber) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -1 * daysNumber);
return format.format(cal.getTime());
}

// 不可大数据量使用,因为Calendar的月的计算是从0开始的,所以传入的month,统一都减去1
public static long getMinMsOfDate(int year, int month, int dayNumber) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, dayNumber, 0, 0, 0);
long ts = calendar.getTimeInMillis();
String ts_str = ("" + ts).substring(0, ("" + ts).length() - 3) + "000";
return Long.parseLong(ts_str);
}

/**
* 得到传入的year,month,day后的最大的Date值,常用做范围查询
*
* @param year
* @param month
* @param dayNumber
* @return
*/
public static long getMaxMsOfDate(int year, int month, int dayNumber) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, dayNumber, 23, 59, 59);
long ts = calendar.getTimeInMillis();
String ts_str = ("" + ts).substring(0, ("" + ts).length() - 3) + "999";
return Long.parseLong(ts_str);
}

/**
* 得到当前时间之指定几天前的字符串
*
* @param day_num
* @return
*/
public static String getFormatDtFromDaysAgo(int day_num) {
Date date = new Date(System.currentTimeMillis() - day_num * DATEMM
* 1000L);
String str = yyyyMMddHH_NOT_.format(date);
return str;
}

/**
* 得到本周的第一天所在的最小的Date值
*
* @return
*/
public static Date getFirstDayMinDateOfThisWeek() {
Calendar cal = Calendar.getInstance();
// 首先判断今天是不是周日,如果是周日,则weekOfYear-1,否则不做weekOfYear的改动
int weekOfYear = cal.get(Calendar.WEEK_OF_YEAR);
cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String today_dt = DateUtil.getTodateString();
if (today_dt.equals(sdf.format(cal.getTime()))) {
weekOfYear = weekOfYear - 1;
}

cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return cal.getTime();
}

/**
* 得到当前月份的第一天所在的最小的Date值
*
* @return
*/
public static Date getFirstDayMinDateOfThisMonth() {
Calendar cal = Calendar.getInstance();
// 首先判断今天是不是周日,如果是周日,则weekOfYear-1,否则不做weekOfYear的改动
int monthOfYear = cal.get(Calendar.MONTH);
cal.set(Calendar.MONTH, monthOfYear);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);

return cal.getTime();
}

public static void main(String[] args) throws Exception {
DateUtil du = new DateUtil();
// long ts = new Date().getTime();
// System.out.println(DateUtil.getMinMsOfDate(2014, 9, 25));
// String dt = DateUtil.getServeralDaysAgo(2);
// System.out.println("dt=" + dt);
// long ts = DateUtil.getMinMsOfDate(2014, 9-1, 25);
// System.out.println("ts---" + ts);
System.out.println(du.getFirstDayMinDateOfThisMonth());
// String yesterday = DateUtil.getYesterdayString();
// int year = Integer.parseInt(yesterday.substring(0, 4).toString());
// int month = Integer.parseInt(yesterday.substring(4, 6).toString());
// int dayNumber = Integer.parseInt(yesterday.substring(6,
// 8).toString());
// long l = du.getMinMsOfDate(year, month, dayNumber);
// System.out.println(new Date(l));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息