疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java获得当前时间的几种方法


 

import java.sql.Timestamp; 
import java.text.ParsePosition; 
import java.text.SimpleDateFormat; 
import java.util.Date;
 
import com.ttsoft.framework.util.DateUtil;
 
/** 
* Title: 时间获取 
* Description: 当前时间 
* Copyright: Copyright   2010 
* Company:  
* @author jiq 
* @version 1.0 
*/ 
public class XJPDateUtil extends DateUtil { 
    public static final String[] months = { "一月", "二月", "三月", "四月", "五月", "六月
 
", 
     "七月", "八月", "九月", "十月", "十一月", "十二月", };
 
    public static final String[] quarters = { "一季度", "二季度", "三季度", "四季度" };
 
    public XJPDateUtil() { 
    }
 
    /** 
     * 获取日期字符串。 
     * 
     * <pre> 
     *  日期字符串格式: yyyyMMdd 
     *  其中: 
     *      yyyy   表示4位年。 
     *      MM     表示2位月。 
     *      dd     表示2位日。 
     * </pre> 
     * 
     * @return String "yyyyMMdd"格式的日期字符串。 
     */ 
    public static String getDate() { 
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
 
return formatter.format(new Date()); 
    }
 
    /** 
     * 获取当前年度字符串。 
     * 
     * <pre> 
     *  日期字符串格式: yyyy 
     *  其中: 
     *      yyyy   表示4位年。 
     * </pre> 
     * 
     * @return String "yyyy"格式的当前年度字符串。 
     */ 
    public static String getNowYear() { 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
 
return formatter.format(new Date()); 
    }
 
    /** 
     * 获取当前月度字符串。 
     * 
     * <pre> 
     *  日期字符串格式: MM 
     *  其中: 
     *      MM   表示4位年。 
     * </pre> 
     * 
     * @return String "yyyy"格式的当前月度字符串。 
     */ 
    public static String getNowMonth() { 
SimpleDateFormat formatter = new SimpleDateFormat("MM");
 
return formatter.format(new Date()); 
    }
    /** 
     * 获取当前月度字符串。 
     * 
     * <pre> 
     *  日期字符串格式: dd 
     *  其中: 
     *      dd   表示4位年。 
     * </pre> 
     * 
     * @return String "yyyy"格式的当前月度字符串。 
     */ 
    public static String getNowDay() { 
SimpleDateFormat formatter = new SimpleDateFormat("dd");
 
return formatter.format(new Date()); 
    }
 
    /** 
     * 获取日期字符串。 
     * 
     * <pre> 
     *  日期字符串格式: yyyyMMdd 
     *  其中: 
     *      yyyy   表示4位年。 
     *      MM     表示2位月。 
     *      dd     表示2位日。 
     * </pre> 
     * 
     * @param date 
     *                需要转化的日期。 
     * @return String "yyyyMMdd"格式的日期字符串。 
     */ 
    public static String getDate(Date date) { 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 
return formatter.format(date); 
    }
 
    /** 
     * 获取日期字符串。 
     * 
     * <pre> 
     *  日期字符串格式: yyyyMMdd 
     *  其中: 
     *      yyyy   表示4位年。 
     *      MM     表示2位月。 
     *      dd     表示2位日。 
     * </pre> 
     * 
     * @param date 
     *                需要转化的日期。 
     * @return String "yyyyMMdd"格式的日期字符串。 
     */ 
    /** 
     * 将指定的日期字符串转化为日期对象 
     * 
     * @param dateStr 
     *                日期字符串 
     * @return java.util.Date 
     * @roseuid 3F39FE450385 
     */ 
    public static Date getDate(String dateStr) { 
if (XJPTypeChecker.isDate(dateStr)) { // 日期型 
     SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); 
     try { 
  java.util.Date date = df.parse(dateStr); 
  return date; 
     } catch (Exception ex) { 
  Logger.write("日期格式不符合或者日期为空!请检查!"); 
  return null; 
     } // end try - catch 
} else if (XJPTypeChecker.isDatetime(dateStr)) { // 日期时间型 
     SimpleDateFormat df = new SimpleDateFormat( 
      "yyyy-MM-dd HH:mm:ss.SSS"); 
     try { 
  java.util.Date date = df.parse(dateStr); 
  return date; 
     } catch (Exception ex) { 
  return null; 
     } // end try - catch 
} // end if 
return null; 
    }
 
    /** 
     * 获取日期字符串。 
     * 
     * <pre> 
     *  日期字符串格式: yyyy-MM-dd 
     *  其中: 
     *      yyyy   表示4位年。 
     *      MM     表示2位月。 
     *      dd     表示2位日。 
     * </pre> 
     * 
     * @return String "yyyy-MM-dd"格式的日期字符串。 
     */ 
    public static String getHyphenDate() { 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 
return formatter.format(new Date()); 
    }
 
    /** 
     * 获取日期字符串。 
     * 
     * <pre> 
     *  日期字符串格式: yyyy-MM-dd 
     *  其中: 
     *      yyyy   表示4位年。 
     *      MM     表示2位月。 
     *      dd     表示2位日。 
     * </pre> 
     * 
     * @param date 
     *                需要转化的日期。 
     * @return String "yyyy-MM-dd"格式的日期字符串。 
     */ 
    public static String getHyphenDate(Date date) { 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 
return formatter.format(date); 
    }
 
    /** 
     * 将"yyyyMMdd"格式的日期字符串转换为日期对象。 
     * 
     * @param source 
     *                日期字符串。 
     * @return Date 日期对象。 
     */ 
    public static Date parsePlainDate(String source) { 
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
 
return sdf.parse(source, new ParsePosition(0)); 
    }
 
    /** 
     * 将“yyyy-MM-dd”格式的日期字符串转换为日期对象。 
     * 
     * @param source 
     *                日期字符串。 
     * @return Date 日期对象。 
     */ 
    public static Date parseHyphenDate(String source) { 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
return sdf.parse(source, new ParsePosition(0)); 
    }
 
    /** 
     * 将指定格式的日期字符串转换为日期对象。 
     * 
     * @param source 
     *                日期字符串。 
     * @param pattern 
     *                模式。 
     * @return Date 日期对象。 
     */ 
    public static Date parseDate(String source, String pattern) { 
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
 
return sdf.parse(source, new ParsePosition(0)); 
    }
 
    /** 
     * 将“yyyy-MM-dd”格式的日期字符串转换为“yyyyMMdd”格式的日期字符串。 
     * 
     * @param source 
     *                日期字符串。 
     * @return String "yyyymmdd"格式的日期字符串。 
     */ 
    public static String toPlainDate(String source) { 
Date date = parseHyphenDate(source); 
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
 
return formatter.format(date); 
    }
 
    /** 
     * 将“yyyyMMdd”格式的日期字符串转换为“yyyy-MM-dd”格式的日期字符串。 
     * 
     * @param source 
     *                日期字符串。 
     * @return String "yyyy-MM-dd"格式的日期字符串。 
     */ 
    public static String toHyphenDate(String source) { 
Date date = parsePlainDate(source); 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 
return formatter.format(date); 
    }
 
    /** 
     * 获取时间戳,将日期对象转换为时间戳类型。 
     * 
     * @param date 
     *                日期对象 
     * @return Timestamp 时间戳 
     */ 
    public static Timestamp getTimestamp(Date date) { 
return new Timestamp(date.getTime()); 
    }
 
    /** 
     * 获取时间戳,将当前日期转换为时间戳类型。 
     * 
     * @return Timestamp 时间戳 
     */ 
    public static Timestamp getTimestamp() { 
return new Timestamp(new Date().getTime()); 
    }
 
    /** 
     * 将“yyyyMMdd”格式的日期字符串转换为Timestamp类型的对象。 
     * 
     * @param source 
     *                日期字符串 
     * @return Timestamp 时间戳 
     */ 
    public static Timestamp parseTimestamp(String source) { 
Date date = parsePlainDate(source);
 
return getTimestamp(date); 
    }
 
    /** 
     * 获得年度周期 <br> 
     * Example:<br> 
     * XJPDateUtil.getPeriodYear("20040229" , -1);<br> 
     * XJPDateUtil.getPeriodYear("20040228" , -1);<br> 
     * XJPDateUtil.getPeriodYear("20020230" , 2);<br> 
     * 
     * @param source 
     *                时间串 
     * @param yearPeriod 
     *                年度周期 -1代表本时间的上一年度,以次类推。 
     * @return String 时间。 
     */ 
    public static String getPeriodYear(String source, int yearPeriod) { 
int p = Integer.parseInt(source.substring(0, 4)) + yearPeriod; 
String newYear = String.valueOf(p) 
  + source.substring(4, source.length()); 
Date date = parsePlainDate(newYear); 
String s = getDate(date); 
int ny = Integer.parseInt(s); 
int sy = Integer.parseInt(newYear);
 
while (ny > sy) { 
     sy--; 
     ny = Integer.parseInt(getDate(parsePlainDate(String.valueOf(sy)))); 
}
 
return String.valueOf(sy); 
    }
 
    /** 
     * 获取当前日期和时间 
     * 
     * @return String 
     */ 
    public static String getCurrentDateStr() { 
Date date = new Date(); 
String str = null; 
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); 
str = df.format(date); 
return str; 
    }
 
    /** 
     * 日期相加 
     * 
     * @param day 
     *             天数 
     * @return 返回相加后的日期 
     */ 
    public static String addDate(int day) { 
java.util.Calendar c = java.util.Calendar.getInstance();
 
c.setTimeInMillis(System.currentTimeMillis() + ((long) day) * 24 * 3600 
  * 1000); 
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); 
return df.format(c.getTime()); 
    }
 
    /** 
     * 返回毫秒 
     * 
     * @param date 
     *             日期 
     * @return 返回毫秒 
     */ 
    public static long getMillis(java.util.Date date) { 
java.util.Calendar c = java.util.Calendar.getInstance(); 
c.setTime(date); 
return c.getTimeInMillis(); 
    } 
    /** 
     * 获取当前日期和时间 
     * @param format 日期格式 例:yyyy-MM-dd hh:mm 
     * @return String 
     */ 
    public static String getNowDate(String format) { 
Date date = new Date(); 
String str = null; 
SimpleDateFormat df = new SimpleDateFormat(format); 
str = df.format(date); 
return str; 
    } 
    /** 
     * 将strmon的日期减小一个月 
     * @param mon 
     * @return 
     */ 
    public static String getReduceMonDate(String strmon) { 
if (strmon != null && !strmon.equals("")) { 
     Date mon = parseHyphenDate(strmon); 
     mon.setMonth(mon.getMonth() - 1); 
     return getHyphenDate(mon); 
} else { 
     return ""; 
    } 
  public static String getTimeStr(String dateStr){ 
Date date=getDate(dateStr); 
String str = null; 
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); 
str = df.format(date); 
return str; 
    } 
  public static String getTimeStr(){ 
      String str=""; 
      SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); 
  str = df.format(new Date()); 
  return str; 
  } 
}