java中日期相关部分转换

经常用到日期相关的转换,所以从网上搜集了一下,自己有根据实际工作中经常用到的几个,进行了整理。

 

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;

/**
 * 处理日期相关
 * @author liugang
 *
 */
public final class DateUtil {
 /**
  * 格式YYYY-MM-DD
  */
 public static String pattern_Date1="yyyy-MM-dd";
 /**
  * 格式YYYYMMDD
  */
 public static String pattern_Date2="yyyyMMdd";
 /**
  * 格式YYYY年MM月DD日
  */
 public static String pattern_Date4="yyyy年MM月dd日";
 /**
  * 格式HH:mm:ss
  */
 public static String pattern_Time="HH:mm:ss";
 /**
  * 格式YYYY-MM-DD HH:mm:ss
  */
 public static String pattern_DateTime="yyyy-MM-dd HH:mm:ss";
 
 /**
  * 将日期转换成字符串
  * @param date 待转换日期
  * @param pattern 转换成的格式。格式已定义,未定义的自己输入
  * @return 格式字符串,输入参数为null或""时返回""
  */
 public static String dateToStr(Date date,String pattern) {
  if (null == date||pattern==null||pattern.equals("")) {
   return "";
  }
  DateFormat df = null;
  try{
   df = new SimpleDateFormat(pattern);
  }catch (IllegalArgumentException e){
   System.out.println("Error-->Date.dateToStr :模式无效"+e.getMessage());
  }
  String dtStr=df.format(date);
  return dtStr;
 }
 /**
  * 将日期字符串转换成日期格式
  * @param dtStr 待转换的字符串
  * @param pattern 待转换字符串的格式
  * @return 转换后的日期,或是null
  */
 public static Date strToDate(String dtStr,String pattern) {
  Date date=null;
  if (dtStr==null||dtStr.equals("")) {
   return null;
  }
  SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
  try {
   date = simpleDateFormat.parse(dtStr);
  } catch (ParseException e) {
   System.out.println("Error-->Date.strToDate :无法分析指定字符串"+e.getMessage());
  }
  return date;
 }
 /**
  * 得到当前日期
  * @param pattern 返回的日期格式
  * @return Date格式的日期
  */
 public static Date getNowDate(){
  Date date=null;
  Calendar calendar=Calendar.getInstance();
  date=calendar.getTime();
  
  return date;
 }
 /**
  * 得到当前日期
  * @param pattern 返回的日期格式
  * @return String 格式日期
  */
 public static String getNowDate(String pattern){
  Date dt=getNowDate();
  String dtStr=dateToStr(dt,pattern);
  return dtStr;
 }
 /**
  * 第一个日期与第二个日期间的间隔天数,如果第二个日期大于第一日期,返回负值天数
  * @param dtStart 第一日期
  * @param dtEnd   第二日起
  * @return 日期间隔天数
  */
 public static long daysAfter(String dtStart, String dtEnd) {
  Calendar calendar = Calendar.getInstance();
  DateFormat df = DateFormat.getDateInstance();
  long long1 = 0, long2 = 0;
  try {
   calendar.setTime(df.parse(dtStart));
   long1 = calendar.getTimeInMillis();
   calendar.setTime(df.parse(dtEnd));
   long2 = calendar.getTimeInMillis();
  } catch (ParseException e) {
  }
  return ((long2 - long1) / (24 * 60 * 60 * 1000));
 }
 /**
  * 第一个日期与第二个日期间的间隔天数,如果第二个日期大于第一日期,返回负值天数
  * @param dtStart 第一日期
  * @param dtEnd   第二日起
  * @return 日期间隔天数
  */
 public static long daysAfter(Date dtStart, Date dtEnd) {
  Calendar calendar = Calendar.getInstance();
  
  long long1 = 0, long2 = 0;
  calendar.setTime(dtStart);
  long1 = calendar.getTimeInMillis();
  calendar.setTime(dtEnd);
  long2 = calendar.getTimeInMillis();
  
  return ((long2 - long1) / (24 * 60 * 60 * 1000));
 }
 /**
  * 得到指定日期前多少天或后多少天的日期
  * @param dt 开始时间
  * @param days 计算的天数(可以为负)
  * @return 计算后的日期
  */
 public static Date relativeDate(Date dt,long days){
  Calendar c = Calendar.getInstance();
  c.setTime(dt);
  long l=c.getTimeInMillis();
  l=l+days * (24 * 60 * 60 * 1000);
  c.setTimeInMillis(l);
  Date date=c.getTime();
  return date;
 }
 /**
  * 得到指定日期前多少秒或后多少秒的日期
  * @param dt 开始时间
  * @param second 计算的秒数(可以为负)
  * @return 计算后的日期
  */
 public static Date relativeTime(Date dt,long second){
  Calendar c = Calendar.getInstance();
  c.setTime(dt);
  long l=c.getTimeInMillis();
  l=l+second * (60 * 1000);
  c.setTimeInMillis(l);
  Date date=c.getTime();
  return date;
 }
 
 /**
     * 取得日期所在周的第一天
     * @param date 日期
     * @return 第一天的日期
     */
    public static Date getFirstWeekDay(Date date){
     if(date==null){
      return null;
     }
     GregorianCalendar gc = null;
     gc = new GregorianCalendar(Locale.CHINA);
     gc.setLenient(true);
     gc.setFirstDayOfWeek(Calendar.MONDAY);
     gc.setTime(date);
     gc.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
     return gc.getTime();
    }
   
    /**
     * 取得日期所在周的最后一天
     * @param date 日期
     * @return 最后一天的日期
     */
    public static Date getLastWeekDay(Date date){
     if(date==null){
      return null;
     }
     GregorianCalendar gc = null;
     gc = new GregorianCalendar(Locale.CHINA);
     gc.setLenient(true);
     gc.setFirstDayOfWeek(Calendar.MONDAY);
     gc.setTime(date);
     gc.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
     return gc.getTime();
    }
 
    /**
     * 取得日期所在月的第一天
     * @param date 日期
     * @return 第一天的日期
     */
    public static Date getFirstMonthDay(Date date){
     if(date==null){
      return null;
     }
     GregorianCalendar gc = null;
     gc = new GregorianCalendar(Locale.CHINA);
     gc.setLenient(true);
     gc.setFirstDayOfWeek(Calendar.MONDAY);
     gc.setTime(date);
     int dayOfMonth = gc.get(Calendar.DAY_OF_MONTH);
     gc.add(Calendar.DAY_OF_MONTH, 1 - dayOfMonth);
     return gc.getTime();
    }
   
    /**
     * 取得日期所在月的最后一天
     * @param date 日期
     * @return 最后一天的日期
     */
    public static Date getLastMonthDay(Date date){
     if(date==null){
      return null;
     }
     GregorianCalendar gc = null;
     gc = new GregorianCalendar(Locale.CHINA);
     gc.setLenient(true);
     gc.setFirstDayOfWeek(Calendar.MONDAY);
     gc.setTime(date);
     int dayOfMonth = gc.get(Calendar.DAY_OF_MONTH);
     int maxDaysOfMonth = gc.getActualMaximum(Calendar.DAY_OF_MONTH);
     gc.add(Calendar.DAY_OF_MONTH, maxDaysOfMonth - dayOfMonth);
     return gc.getTime();
    } 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值