zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java -日期

2023-09-27 14:20:51 时间

 

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;
 }