網(wǎng)站:
JavaEye
作者:
iwinyeah
鏈接:
http://iwinyeah.javaeye.com/blog/173704
發(fā)表時(shí)間: 2008年03月19日
聲明:本文系JavaEye網(wǎng)站發(fā)布的原創(chuàng)博客文章,未經(jīng)作者書面許可,嚴(yán)禁任何網(wǎng)站轉(zhuǎn)載本文,否則必將追究法律責(zé)任!
我的一個(gè)日期處理類,解決了時(shí)區(qū)問(wèn)題,給有需要的人。
package util;
/**
* --------------------------------------------------
* 日期轉(zhuǎn)換對(duì)象
* --------------------------------------------------
* 主要提供日期與1970-01-01后的天數(shù)的轉(zhuǎn)換和到字符串的轉(zhuǎn)換
* --------------------------------------------------
*
* @author iwinyeah 李永超
* @version 1.0.0
* */
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class DateUtil {
private static Calendar _calendar = Calendar.getInstance(); // 用于日期計(jì)算
private static long MSEC_EVERYDAY = 86400000L; // 一天的微秒數(shù)
private static int rawOffset = TimeZone.getDefault().getRawOffset();
/**
* 將日期轉(zhuǎn)換為1970-01-01后的天數(shù)
*
* @param Date
* theDate 要計(jì)算天數(shù)的日期
* @return int 所傳入日期與1970-01-01相差的天數(shù)
*/
public static int dateToDay(Date theDate) {
return (int) ((theDate.getTime() + rawOffset) / MSEC_EVERYDAY);
}
/**
* 將1970-01-01后的天數(shù)轉(zhuǎn)換為日期
*
* @param int
* 要取的日期與1970-01-01相差的天數(shù)
* @return Date theDate 與1970-01-01相差相應(yīng)天數(shù)的日期
*/
public static Date dayToDate(int day) {
return new Date(day * MSEC_EVERYDAY);
}
/**
* 取今天與1970-01-01相差的天數(shù)
*
* @return int 取今天與1970-01-01相差的天數(shù)
*/
public static int toDay() {
return (int) ((System.currentTimeMillis() + rawOffset) / MSEC_EVERYDAY);
}
/**
* 將日期轉(zhuǎn)換為年月日字符串
*
* @param int
* theDay 與1970-01-01相差的天數(shù)
* @return String 對(duì)應(yīng)日期年月日形式的字符串
*/
public static String getYMD(int theDay) {
_calendar.setTime(dayToDate(theDay));
return _calendar.get(Calendar.YEAR) % 100 + "/"
+ (_calendar.get(Calendar.MONTH) + 1 > 9 ? "" : "0")
+ (_calendar.get(Calendar.MONTH) + 1) + "/"
+ (_calendar.get(Calendar.DATE) > 9 ? "" : "0")
+ _calendar.get(Calendar.DATE);
}
/**
* 將日期轉(zhuǎn)換為年月字符串
*
* @param int
* theDay 與1970-01-01相差的天數(shù)
* @return String 對(duì)應(yīng)日期年月形式的字符串
*/
public static String getYM(int theDay) {
_calendar.setTime(dayToDate(theDay));
return _calendar.get(Calendar.YEAR) + "/"
+ (_calendar.get(Calendar.MONTH) + 1 > 9 ? "" : "0")
+ (_calendar.get(Calendar.MONTH) + 1);
}
/**
* 將日期轉(zhuǎn)換為月日字符串
*
* @param int
* theDay 與1970-01-01相差的天數(shù)
* @return String 對(duì)應(yīng)日期月日形式的字符串
*/
public static String getMD(int theDay) {
_calendar.setTime(dayToDate(theDay));
return (_calendar.get(Calendar.MONTH) + 1 > 9 ? "" : "0")
+ (_calendar.get(Calendar.MONTH) + 1) + "/"
+ (_calendar.get(Calendar.DATE) > 9 ? "" : "0")
+ _calendar.get(Calendar.DATE);
}
/**
* 將日期轉(zhuǎn)換為當(dāng)月一號(hào)
*
* @param int
* theDay 與1970-01-01相差的天數(shù)
* @return int 對(duì)應(yīng)日期所在月份第一天與1970-01-01相差的天數(shù)
*/
public static int getMonthFirstDay(int theDay) {
_calendar.setTime(dayToDate(theDay));
_calendar.set(Calendar.DAY_OF_MONTH, 1);
return (int) (dateToDay(_calendar.getTime()));
}
/**
* 取日期所在年份
*
* @param int
* theDay 與1970-01-01相差的天數(shù)
* @return int 對(duì)應(yīng)日期所在年份
*/
public static int getYear(int theDay) {
_calendar.setTime(dayToDate(theDay));
return _calendar.get(Calendar.YEAR);
}
/**
* 取日期所在月份
*
* @param int
* theDay 與1970-01-01相差的天數(shù)
* @return int 對(duì)應(yīng)日期所在月份
*/
public static int getMonth(int theDay) {
_calendar.setTime(dayToDate(theDay));
return _calendar.get(Calendar.MONTH);
}
/**
* 取日期所在周次
*
* @param int
* theDay 與1970-01-01相差的天數(shù)
* @return int 對(duì)應(yīng)日期所在周次
*/
public static int getWeek(int theDay) {
// 1971-01-03是星期日,從該日開始計(jì)算周次
_calendar.setTime(dayToDate(theDay));
return (int) ((_calendar.getTime().getTime() - 172800000L) / 604800000L);
}
}
本文的討論也很精彩,瀏覽討論>>
JavaEye推薦
文章來(lái)源:
http://iwinyeah.javaeye.com/blog/173704