|
import java.util.*;
import java.text.*;
/**
* a DateTime 定义了日期时间的一些便捷的格式化操作
*
* @version 1.0
* @author markhuang
*/
public class DateTime {
/**
* 存储时间和日期,默认当前时间和日期
*/
// private Calendar cale = Calendar.getInstance();
private Calendar cale = new GregorianCalendar();
/**
* 默认构造函数,得到当前时间和日期
*/
public DateTime() {
cale.setLenient(false);
}
/**
* 构造函数,可设置毫秒
*
* @param millisecond
* 过去的毫秒数
* @see DateTime
*/
public DateTime(long millisecond) {
cale.setLenient(false);
cale.setTimeInMillis(millisecond);
}
/**
* 构造函数,可设置年月日时分秒
*
* @param year
* 年
* @param month
* 月
* @param day
* 日
* @param hour
* 小时
* @param minute
* 分钟
* @param second
* 秒
* @see DateTime(long)
*/
public DateTime(int year, int month, int day, int hour, int minute,
int second) {
cale.setLenient(false);
cale.set(Calendar.YEAR, year);
// 老外的月份是从0到 11
cale.set(Calendar.MONTH, month - 1);
cale.set(Calendar.DAY_OF_MONTH, day);
cale.set(Calendar.HOUR_OF_DAY, hour);
cale.set(Calendar.MINUTE, minute);
cale.set(Calendar.SECOND, second);
}
/**
* 得到当前年
*
* @return 当前年
*/
public int year() {
return cale.get(Calendar.YEAR);
}
/**
* 得到当前月
*
* @return 当前月
*/
public int month() {
// 老外的月份是从0到 11
return cale.get(Calendar.MONTH) + 1;
}
/**
* 得到当前日
*
* @return 当前日
*/
public int day() {
return cale.get(Calendar.DAY_OF_MONTH);
}
/**
* 得到当前小时
*
* @return 当前小时
*/
public int hour() {
return cale.get(Calendar.HOUR_OF_DAY);
}
/**
* 得到当前分钟
*
* @return 当前分钟
*/
public int minute() {
return cale.get(Calendar.MINUTE);
}
/**
* 得到当前秒
*
* @return 当前秒
*/
public int second() {
return cale.get(Calendar.SECOND);
}
/**
* 得到当前毫秒
*
* @return 当前毫秒
*/
public int millisecond() {
return cale.get(Calendar.MILLISECOND);
}
/**
* 得到总毫秒数
*
* @return 总毫秒数
*/
public long allmillisecond() {
return cale.getTimeInMillis();
}
/**
* 得到当前星期几
*
* @return 当前星期几
*/
public int dayofweek() {
// 老外星期天是一周的第一天
int dayofweek = cale.get(Calendar.DAY_OF_WEEK);
return dayofweek == 1 ? 7 : dayofweek - 1;
}
/**
* 得到当前星期几
*
* @return 当前星期几
*/
public String dayofweek_CN() throws ArrayIndexOutOfBoundsException {
// 老外星期天是一周的第一天
String[] dayofweek = { "日", "一", "二", "三", "四", "五", "六" };
return "星期" + dayofweek[cale.get(Calendar.DAY_OF_WEEK) - 1];
}
/**
* 得到当前是当年中的第几天
*
* @return 当年中的第几天
*/
public int dayofyear() {
return cale.get(Calendar.DAY_OF_YEAR);
}
/**
* 得到yyyyMMddhhmmss 格式的日期
*
* @return yyyyMMddhhmmss 格式的日期
* @see longdatetime(char, char)
*/
public String shortdatetime() throws ArrayIndexOutOfBoundsException {
SimpleDateFormat format = null;
try {
format = new SimpleDateFormat("yyyyMMddHHmmss");
} catch (IllegalArgumentException e) {
throw new ArrayIndexOutOfBoundsException();
}
return format.format(cale.getTime());
}
/**
* 得到类似yyyy-MM-dd hh:mm:ss 格式的日期
*
* @param datesep
* 日期分隔符号
* @param timesep
* 时间分隔符号
* @return 类似yyyy-MM- dd hh:mm:ss 格式的日期
* @see longdatelongtime(char, char)
*/
public String longdatetime(char datesep, char timesep)
throws ArrayIndexOutOfBoundsException {
String pattern = "yyyy" + datesep + "MM" + datesep + "dd";
pattern += " HH" + timesep + "mm" + timesep + "ss";
SimpleDateFormat format = null;
try {
format = new SimpleDateFormat(pattern);
} catch (IllegalArgumentException e) {
throw new ArrayIndexOutOfBoundsException();
}
return format.format(cale.getTime());
}
/**
* 得到类似yyyy-MM- dd hh:mm:ss:SSS 格式的日期
*
* @param datesep
* 日期分隔符号
* @param timesep
* 时间分隔符号
* @return 类似yyyy-MM- dd hh:mm:ss:SSS 格式的日期
* @see longdatetime(char, char)
*/
public String longdatelongtime(char datesep, char timesep)
throws ArrayIndexOutOfBoundsException {
String pattern = "yyyy" + datesep + "MM" + datesep + "dd";
pattern += " HH" + timesep + "mm" + timesep + "ss";
pattern += timesep + "SSS";
SimpleDateFormat format = null;
try {
format = new SimpleDateFormat(pattern);
} catch (IllegalArgumentException e) {
throw new ArrayIndexOutOfBoundsException();
}
return format.format(cale.getTime());
}
/**
* 得到类似yyyyMMdd格式的日期
*
* @return 类似yyyyMMdd格式的日期
* @see longdate(char)
*/
public String shortdate() throws ArrayIndexOutOfBoundsException {
SimpleDateFormat format = null;
try {
format = new SimpleDateFormat("yyyyMMdd");
} catch (IllegalArgumentException e) {
throw new ArrayIndexOutOfBoundsException();
}
return format.format(cale.getTime());
}
/**
* @param datesep
* 日期分隔符号
* @return 类似yyyy-MM-dd格式的日期
* @see shortdate()
*/
public String longdate(char datesep) throws ArrayIndexOutOfBoundsException {
String pattern = "yyyy" + datesep + "MM" + datesep + "dd";
SimpleDateFormat format = null;
try {
format = new SimpleDateFormat(pattern);
} catch (IllegalArgumentException e) {
throw new ArrayIndexOutOfBoundsException();
}
return format.format(cale.getTime());
}
/**
* @param s
* 被输出到输出终端的值
*/
public < T> void out(T s) {
System.out.println(s);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
DateTime dt = new DateTime();
dt.out(dt.shortdatetime());
dt.out(dt.dayofyear());
dt.out(dt.day());
dt.out(dt.month());
dt.out(dt.dayofweek_CN());
dt.out(dt.longdatetime('-', '&'));
dt.out(dt.longdatelongtime('-', ':'));
dt = new DateTime(2009, 5, 9, 12, 56, 12);
dt.out("aa:" + dt.longdatelongtime('-', ':'));
dt.out(dt.hour());
dt.out(dt.shortdatetime());
dt.out(dt.shortdate());
dt.out(dt.dayofweek());
dt.out(dt.dayofyear());
dt.out(new DateTime().allmillisecond() - dt.allmillisecond());
dt = new DateTime(dt.allmillisecond() - 1000000000);
dt.out(dt.minute());
dt.out(dt.second());
dt.out(dt.longdatelongtime('-', ':'));
} catch (ArrayIndexOutOfBoundsException e) {
new DateTime().out("exception:" + e.getMessage());
} catch (java.lang.IllegalArgumentException e) {
new DateTime().out("exception:" + e.getMessage());
}
}
} 运行结果:
C:\java>java DateTime
20100514123528
134
14
5
星期五
2010-05-14 12&35&28
2010-05-14 12:35:28:296
aa:2009-05-09 12:56:12:546
12
20090509125612
20090509
6
129
31966756016
9
32
2009-04-27 23:09:32:546
C:\java> |
|