package com.qinghuainvest.tsmarket.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; public class UtilsDate { public static final String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss"; public static final String yyyy_MM_dd = "yyyy-MM-dd"; public static final String yyyyMMdd = "yyyyMMdd"; public static final String yyyyMM = "yyyyMM"; /** * 将字符串日期格式转化成另一种日期格式 * @param strDate:字符日期 * @param dateFormat:字符日期的格式 * @param pformat:需要格式化后的日期格式 * @return */ public static String getStringToString(String strDate,String dateFormat,String pformat){ return getDateToString(getStringToDate(dateFormat, strDate), pformat); } /** * 系统日期转化成字符串 * @param format * @return */ public static String getSystemDateToString(String format) { return getDateToString(new Date(), format); } /** * 日期转化成str字符串 * @param date * @param format * @return */ public static String getDateToString(Date date,String format) { if( date == null )return null; SimpleDateFormat siFormat = new SimpleDateFormat(format); try { return siFormat.format(date); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 系统日期的前n日 * @param dateTime:待处理的日期 * @param n:加减天数 * @return */ public static String getSystemDateToYesterday(int n,String format){ try { return getDateToString(new Date(getSystemDateToDate(format).getTime()- n * 24 * 60 * 60 * 1000), format); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 系统年份 * @param format * @return */ public static int getYear(String format){ return getYear(format, new Date()); } /** * 读取日期中的年份 * @param format * @param date * @return */ public static int getYear(String format,Date date){ try { return Integer.parseInt(new SimpleDateFormat(format).format(date)); } catch (Exception e) { e.printStackTrace(); } return 0; } /** * 读取系统日期 * @param format * @return */ public static Date getSystemDateToDate(String format) { return getStringToDate(format, new SimpleDateFormat(format).format(new Date())); } /** * 字符串日期转化成日期对象Date * @param format * @param date * @param locale * @return */ public static Date getStringToDate(String format,String date,Locale locale) { try { return new SimpleDateFormat(format,locale).parse(date); } catch (ParseException ex) { ex.printStackTrace(); } return null; } /** * 字符串日期转化成日期对象Date(本地日期对象) * @param format * @param date * @return */ public static Date getStringToDate(String format,String date) { return getStringToDate(format, date, Locale.CHINA); } /** * 比较两个日期是否相等 * @param date1 * @param date2 * @return */ public static boolean isEquals(Date date1,Date date2){ return isEqualsYYYYMMDD(getDateToString(date1,yyyy_MM_dd_HH_mm_ss), getDateToString(date2,yyyy_MM_dd_HH_mm_ss)); } /** * 当前日期是否与系统日期相等 * @param date * @param systemformat * @return */ public static boolean isEqualsYYYYMMDDToday(String date,String systemformat){ return isEqualsYYYYMMDD(date,getSystemDateToString(systemformat)); } /** * 当前日期是否与系统日期相等 * @param date * @return */ public static boolean isEqualsYYYYMMDDToday(Date date){ return isEqualsYYYYMMDD(date,new Date()); } /** * 比较两个日期是否相等 * @param date1 * @param date2 * @return */ public static boolean isEqualsYYYYMMDD(Date date1,Date date2){ return isEqualsYYYYMMDD(getDateToString(date1,yyyy_MM_dd), getDateToString(date2,yyyy_MM_dd)); } /** * 比较两个日期字符串是否相等,需要确定两个日期的字符格式 * @param str1 * @param str1Format * @param str2 * @param str2Format * @return */ public static boolean isEqualsYYYYMMDD(String str1,String str1Format,String str2,String str2Format){ return isEqualsYYYYMMDD(getStringToString(str1, str1Format, yyyy_MM_dd), getStringToString(str2, str2Format, yyyy_MM_dd)); } /** * 比较两个日期字符串是否相等,需要确定两个日期的字符格式 * @param str1 * @param str2 * @return */ public static boolean isEqualsYYYYMMDD(String str1,String str2){ if( str1== null ){ if( str2 == null )return true; return false; } return str1.equals(str2); } /** * 比较日期大小 * @param date1 * @param date2 * @return true:date1大于/等于data2;false:date1小于data2 */ public static boolean isMoreSize(Date date1,Date date2) { if( date1 == null ) return false; if(!date1.before(date2)) return true; return false; } public static void main(String[] args) { Date date1 = UtilsDate.getStringToDate(UtilsDate.yyyy_MM_dd,"2015-01-29"); Date date2 = UtilsDate.getSystemDateToDate(UtilsDate.yyyy_MM_dd); if( !UtilsDate.isMoreSize(date1, date2)) {//今天之前的,则移除 System.out.println("data1小于且不等于date2移除"); } System.out.println("比较日期大小:"+getStringToDate(yyyy_MM_dd,"2015-04-29")); System.out.println("当前系统日期:"+getSystemDateToString(yyyy_MM_dd_HH_mm_ss)); System.out.println("今年"+getYear("yyyy")); System.out.println("系统日期的前一天:"+getSystemDateToYesterday(1, yyyy_MM_dd)); } }
获取上个月:
Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, -1); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM"); String time = format.format(c.getTime());
//得到一个月最后一天日期(31/30/29/28) int MaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH); //按你的要求设置时间 c.set( c.get(Calendar.YEAR), c.get(Calendar.MONTH), MaxDay, 23, 59, 59); //按格式输出 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String gtime = sdf.format(c.getTime()); //上月最后一天 /** * 获取本日日期 * @return */ public static String getToDay(){ Calendar c = Calendar.getInstance(); String time = getTime(c); System.out.println(time); return time; } /** * 获取本周一日期 * @return */ public static String getWeekA(){ Calendar cal =Calendar.getInstance(); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // System.out.println(cal.getTime()); String time = getTime(cal)+" 00:00:00"; System.out.println(time); return time; } /** * 获取本周日日期 * @return */ public static String getWeekB(){ Calendar cal =Calendar.getInstance(); // System.out.println(cal.getTime()); //这种输出的是上个星期周日的日期,因为老外那边把周日当成第一天 cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // System.out.println(cal.getTime()); //增加一个星期,才是我们中国人理解的本周日的日期 cal.add(Calendar.WEEK_OF_YEAR, 1); // System.out.println(cal.getTime()); //本周日 String time = getTime(cal)+" 23:59:59"; System.out.println(time); return time; } /** * 获取本月日期 * @return */ public static String getMonth(){ Calendar c = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM"); String time = format.format(c.getTime()); System.out.println(time); return time; }