1. 程式人生 > >JAVA獲得當前時間的幾種方法

JAVA獲得當前時間的幾種方法

package com.xjp.common.util;

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