java常用日期类型转换

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;

/**
 * @author Simon Lv
 * @since 2012-6-10
 */
public class DateUtils {

    public static final String YYMMDD = "yyMMdd";
    public static final String YYYYMMDD = "yyyyMMdd";
    public static final String PATTERN_DATETIME = "yyyy-MM-dd HH:mm:ss";
    public static final String PATTERN_DATETIME_M = "yyyy-MM-dd HH:mm";
    public static final String PATTERN_DATE = "yyyy-MM-dd";
    public static final String PATTERN_MONTH = "yyyy-MM";
    public static final String YEAR = "yyyy";
    public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(
            "yyyy-MM-dd hh:mm:ss");

    public static DateTime toDateTime(String dateTime) {
        if (StringUtils.isBlank(dateTime)) {
            return null;
        }
        return DateTimeFormat.forPattern(PATTERN_DATETIME).parseDateTime(dateTime);
    }
    
    public static DateTime strToDateTime(String dateTime) {
        if (StringUtils.isBlank(dateTime)) {
            return null;
        }
        return DateTimeFormat.forPattern(PATTERN_DATE).parseDateTime(dateTime);
    }

    public static String toString(DateTime dateTime) {
        return dateTime.toString(PATTERN_DATETIME);
    }
    
    public static String dateToString(DateTime dateTime) {
        return dateTime.toString(YEAR);
    }
    public static String dateTimeToString(DateTime dateTime) {
        return dateTime.toString(PATTERN_DATE);
    }

    public static String toString(String dateTime, String pattern) {
        return new DateTime(dateTime).toString(pattern);
    }

    public static String toString(LocalDate localDate, String pattern) {
        if (localDate == null) {
            return null;
        }
        return localDate.toString(pattern);
    }

    public static String todayToString() {
        return new LocalDate().toString(YYMMDD);
    }
    public static String todayToStringYear() {
        return new LocalDate().toString(YEAR);
    }
    public static String todayToString2() {
        return new LocalDate().toString(YYYYMMDD);
    }
    public static String todayToYYYYMMDDStr() {
        return new LocalDate().toString(PATTERN_DATE);
    }
    public static String todayToChinaStr() {
        Calendar calendar =Calendar.getInstance();
        StringBuffer sb = new StringBuffer();
        sb.append(calendar.get(Calendar.YEAR)).append("年")
            .append(calendar.get(Calendar.MONTH)+1).append("月")
            .append(calendar.get(Calendar.DAY_OF_MONTH)).append("日")
            .append(calendar.get(Calendar.HOUR)).append("时")
            .append(calendar.get(Calendar.MINUTE)).append("分");
        
        return sb.toString();
    }
    
    /**
     * 将微信消息中的CreateTime转换成标准格式的时间(yyyy-MM-dd HH:mm:ss)
     * 
     * @param createTime
     * @return
     */
    public static String getNormalDateFromWebChat(String createTime) {
        Long msgCreateTime = Long.parseLong(createTime) * 1000;

        return DATE_FORMAT.format(new Date(msgCreateTime));
    }
    /**
     * 将long型时间格式转换为字符格式
     * 
     * @return 返回字符串格式 yyyy-MM-dd HH:mm:ss
     */
    public static String long2LongString(long date){
        if(date == -99){
            return "-";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATETIME);
        return sdf.format(new Date(date));
    }
    
    public static String long2DateString(Long date, String pattern){
        if(date == null || date.longValue() ==0){
            return "-";
        }
        if(date.longValue() == -99){
            return "";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(new Date(date));
    }
    
    /**
     * 将long型时间格式转换为字符格式
     * 
     * @return 返回字符串格式 yyyy-MM-dd HH:mm
     */
    public static String long2DatemString(long date){
        if(date == -99){
            return "-";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATETIME_M);
        return sdf.format(new Date(date));
    }
    
    /**
     * 将long型时间格式转换为字符格式
     * 
     * @param date
     * @return 返回字符串格式 yyyy-MM-dd
     */
    public static String long2String(Long date){
        if(null == date || date == -99 || date == 0){
            return "-";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATE);
        return sdf.format(new Date(date));
    }
    
    /***
     * YYYY-MM-DD
     * @param dateTime
     * @return
     */
    public static long str2Long(String dateTime){
        if (StringUtils.isBlank(dateTime)) {
            return 0l;
        }
        Date date = string2Date(dateTime);
        
        return date.getTime();
    }
    /**
     * yyyy-MM-dd HH:mm:ss
     * @param dateTime
     * @return
     */
    public static long strSLong(String dateTime){
        if (StringUtils.isBlank(dateTime)) {
            return 0l;
        }
        Date date = string2Datetime(dateTime);
        
        return date.getTime();
    }
    
    /**
     * 将DateTime型时间格式转换为long
     * 
     * @param date
     * @return 
     */
    public static long date2Long(DateTime dateTime){
        if (dateTime == null) {
            return 0l;
        }
        String date1 = dateTimeToString(dateTime);
        Date date = string2Date(date1);
        return date.getTime();
    }
    
    
    /**
     * 获得精确到秒的日期类型
     * yyyy-MM-dd HH:mm:ss
     * @param date
     * @return
     */
    public static Date string2Datetime(String date) {
        Date retValue = null ;
        SimpleDateFormat sdf= new SimpleDateFormat(PATTERN_DATETIME);
        try{
            retValue = sdf.parse(date);
        }catch(Exception e){
            e.printStackTrace();
        }
        return retValue;
    }
    
    /**
     * 获得日期类型
     * 
     * @param date
     * @return
     */
    public static Date string2Date(String date) {
        Date retValue = null ;
        SimpleDateFormat sdf= new SimpleDateFormat(PATTERN_DATE);
        try{
            retValue = sdf.parse(date);
        }catch(Exception e){
            e.printStackTrace();
        }
        return retValue;
    }
    
    /**
     * 日期转换为Long
     * 
     * @param dateTime
     * @return
     */
    public static long str2MonthLong(String dateTime){
        if (StringUtils.isEmpty(dateTime)) {
            return 0l;
        }
        Date date = string2MonthDate(dateTime);
        
        return date != null ? date.getTime() : 0l;
    }
    
    /**
     * 获得月份类型
     * 
     * @param date
     * @return
     */
    public static Date string2MonthDate(String date) {
        Date retValue = null ;
        SimpleDateFormat sdf= new SimpleDateFormat(PATTERN_MONTH);
        try{
            retValue = sdf.parse(date);
        }catch(Exception e){
            e.printStackTrace();
        }
        return retValue;
    }
    /***
     * YYYY-MM-DD
     * @param date
     * @return
     */
    public static int getDayOfWeek(String date){
        String[] dateArr = date.split("-");
        int year = Integer.parseInt(dateArr[0]);
        int month = Integer.parseInt(dateArr[1]);
        int day= Integer.parseInt(dateArr[2]);
        Calendar calendar = Calendar.getInstance();//获得一个日历
        calendar.set(year, month-1, day);//设置当前时间,月份是从0月开始计算
        int number = calendar.get(Calendar.DAY_OF_WEEK);//星期表示1-7,是从星期日开始,   
        return number;
    }
    /**
     * 获取指定日期一年前时间
     * 
     * @return 返回long格式 
     */
    public static long getChainYear(long date){
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date(date));
        cal.add(Calendar.YEAR,-1);   
        return cal.getTime().getTime();
    }
    
    /***
     * 时间差,分钟
     * @param startTime
     * @param endTime
     * @return
     */
    public static String timeDifference(long startTime,long endTime ){
        long timeDifferenceSecond = endTime - startTime;
        double dmin = ((double)timeDifferenceSecond/(60*1000));
        BigDecimal bd = BigDecimal.valueOf(dmin);
        DecimalFormat df = new DecimalFormat("0");
        df.setRoundingMode(RoundingMode.HALF_UP);
        return df.format(bd);
    }
    
    public static Date getTimesWeekMoningDate(int h,int m,int s){
        Calendar cal = Calendar.getInstance();        
        int year = cal.get(Calendar.YEAR);
        int monday = cal.get(Calendar.MONDAY);
        int dayOfMonth =  cal.get(Calendar.DAY_OF_MONTH);
        cal.set(year, monday,dayOfMonth, h, m, s);        
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);        
        return cal.getTime();
    }
    /**
     * 本周开始时间 yyyy-MM-dd HH:mm:ss 0点
     * @return
     */
    public static String getTimesWeekMorning() {        
        SimpleDateFormat formatter = new SimpleDateFormat(PATTERN_DATETIME);
        String dateString = formatter.format(getTimesWeekMoningDate(0,0,0));
        return dateString;
    }
    
    /**
     * 本周结束时间 yyyy-MM-dd HH:mm:ss 24点
     * @return
     */
    public static String getTimesWeekNight() {        
        Calendar cal = Calendar.getInstance();    
        cal.setTime(getTimesWeekMoningDate(0,0,0));        
        cal.add(Calendar.DAY_OF_WEEK, 7);        
        SimpleDateFormat formatter = new SimpleDateFormat(PATTERN_DATETIME);
        String dateString = formatter.format(cal.getTime());
        return dateString;
    }
    
    
    /***
     * 本月开始时间0点
     * @return
     */
    public static String getTimesMonthMorning() {        
        Calendar cal = Calendar.getInstance();        
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);    
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
        SimpleDateFormat formatter = new SimpleDateFormat(PATTERN_DATETIME);
        String dateString = formatter.format(cal.getTime());
        return dateString;
    }
    
    /***
     * 本月结束时间24点
     * @return
     */
    public static String getTimesMonthNight() {        
        Calendar cal = Calendar.getInstance();    
        int year = cal.get(Calendar.YEAR);
        int monday = cal.get(Calendar.MONDAY);
        int dayOfMonth =  cal.get(Calendar.DAY_OF_MONTH);
        cal.set(year, monday,dayOfMonth, 0, 0, 0);        
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));        
        cal.set(Calendar.HOUR_OF_DAY, 24);        
        SimpleDateFormat formatter = new SimpleDateFormat(PATTERN_DATETIME);
        String dateString = formatter.format(cal.getTime());
        return dateString;    
    }
}

 

posted @ 2015-06-04 14:38  何秋雨  阅读(4510)  评论(0编辑  收藏  举报