黑马程序员技术交流社区
标题:
日期问题
[打印本页]
作者:
sixth
时间:
2012-11-1 18:38
标题:
日期问题
比方说在一个项目中,有用户这样一个类,它里面有一个创建日期的属性。应该怎么把它定义,定义成什么类型的。方便在数据库中的存取。以及以后的显示使用。
作者:
奋斗的青春
时间:
2012-11-1 18:49
本帖最后由 吴愿涛 于 2012-11-1 18:52 编辑
Java对日期的处理技巧
public class BusinessDate {
public BusinessDate() {
}
/**
* 取得当天日期,格式 2009-02-11
* @return
*/
public static String getToday() {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
Calendar cl = new GregorianCalendar();
return sdf.format(cl.getTime());
}
/**
* 取得当天日期时间,格式 2009-02-11 23:9:21
* @return
*/
public static String getTodaytime() {
Calendar cl = new GregorianCalendar();
return getToday() + " " + cl.get(Calendar.HOUR_OF_DAY) + ":" + cl.get(Calendar.MINUTE) + ":" + cl.get(Calendar.SECOND) + " ";
}
/**
* 取得当前时间,格式 23:12:20
* @return
*/
public static String getTime() {
Calendar cl = new GregorianCalendar();
return cl.get(Calendar.HOUR_OF_DAY) + ":" + cl.get(Calendar.MINUTE) + ":" + cl.get(Calendar.SECOND) + " ";
}
/**
* 取得当前小时
* @return
*/
public static int getHour() {
Calendar cl = new GregorianCalendar();
return cl.get(Calendar.HOUR_OF_DAY);
}
/**
* 取得当前日期 格式为20090211
* @return
*/
public static String getNoFormatToday() {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyyMMdd");
Calendar cl = new GregorianCalendar();
return sdf.format(cl.getTime());
}
/**
* 取得当前时间 格式为231611
* @return
*/
public static String getNoFormatTime() {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("HHmmss");
Calendar cl = new GregorianCalendar();
return sdf.format(cl.getTime());
}
/**
* 取得当前年份
* @return
*/
public static String getYear() {
return BusinessDate.getNoFormatToday().substring(0, 4);
}
/**
* 取得当前月份
* @return
*/
public static String getMonth() {
return BusinessDate.getNoFormatToday().substring(4, 6);
}
/**
* 取得当前日
* @return
*/
public static String getDay() {
return BusinessDate.getNoFormatToday().substring(6,8 ) ;
}
/**
* 返回昨天的日期 格式2009-02-10
* @return
*/
public static String getYesterday() {
String strYesterday = "";
Calendar cale = null;
cale = new GregorianCalendar();
cale.add(Calendar.DATE, -1);
strYesterday = BusinessDate.getStrByCalendar(cale);
return strYesterday;
}
public static String getStrByCalendar(Calendar cale) {
return (new java.text.SimpleDateFormat("yyyy-MM-dd")).format(cale.getTime());
}
/**
* 日期字符串的格式转换,例如"2009-02-11"转换为2009年2月11日
* @param sDate
* @return
*/
public static String getChnDateString(String sDate) {
if (sDate == null) {
return null;
}
sDate = sDate.trim();
if (sDate.length() == 7) {
sDate += "-01";
}
StringTokenizer st = new StringTokenizer(sDate, "-");
int year = 2100;
int month = 0;
int day = 1;
try {
year = Integer.parseInt(st.nextToken());
month = Integer.parseInt(st.nextToken()) - 1;
day = Integer.parseInt(st.nextToken());
} catch (Exception e) {
e.printStackTrace();
}
Calendar cl = new GregorianCalendar(year, month, day);
return cl.get(Calendar.YEAR) + "年" + (cl.get(Calendar.MONTH) + 1) + "月" + cl.get(Calendar.DATE) + "日";
}
/**
* 取得某年某月的最后一天
* @param year
* @param month
* @return
*/
public static String getMaxDayOfMonth(int year, int month) {
Calendar cal = new GregorianCalendar(year, month - 1, 1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
/**
* 取得某年某月的第一天
* @param year
* @param month
* @return
*/
public static String getMinDayOfMonth(int year, int month) {
Calendar cal = new GregorianCalendar(year, month - 1, 1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
/**
* 取得当天的中文日期,像2006年11月28日 星期二
* @return
*/
public static String getChineseToDay() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E", Locale.CHINESE);
Calendar cl = new GregorianCalendar();
return sdf.format(cl.getTime());
}
/**
* 取得当天的中文日期,像2006年11月28日 星期二 下午05:06
* @return
*/
public static String getChineseToDayTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E a", Locale.CHINESE);
Calendar cl = new GregorianCalendar();
return sdf.format(cl.getTime());
}
/**
* 根据字符串,取得日期类
* @param sDate
* @return
*/
public static Calendar getDate(String sDate) {
if (sDate == null) {
return null;
}
sDate = sDate.trim();
if (sDate.length() == 7) {
sDate += "-01";
}
StringTokenizer st = new StringTokenizer(sDate, "-");
int year = 2100;
int month = 0;
int day = 1;
try {
year = Integer.parseInt(st.nextToken());
month = Integer.parseInt(st.nextToken()) - 1;
day = Integer.parseInt(st.nextToken());
} catch (Exception e) {
e.printStackTrace();
}
return new GregorianCalendar(year, month, day);
}
/**
* 根据日期类取得日期的字符串形式
* @param sDate
* @return
*/
public static String getDateString(Calendar sDate) {
if (sDate == null) {
return "";
}
return (new java.text.SimpleDateFormat("yyyy-MM-dd")).format(sDate.getTime());
}
/**根据日期类取年月的字符串形式
* @param sDate
* @return
*/
public static String getYearMonth(Calendar sDate) {
if (sDate == null) {
return "";
}
return (new java.text.SimpleDateFormat("yyyy-MM")).format(sDate.getTime());
}
/**比较两个日期类型的字符串,格式为(yyyy-mm-dd)
* 如果cale1大于cale2,返回1
* 如果cale1小于cale2,返回-1
* 如果相等,返回0
* 如果格式错误,返回-2
* @param cale1
* @param cale2
* @return
*/
public static int compareCalendar(String cale1, String cale2) {
Calendar calendar1 = getDate(cale1);
Calendar calendar2 = getDate(cale2);
if (calendar1 == null || calendar2 == null) {
return -2;
}
return calendar1.compareTo(calendar2);
}
}
作者:
张忠豹
时间:
2012-11-1 20:38
在JavaBean中相关属性定义成java.util.Date类型,而在数据库中的日期类型就是java.sql.Date。
如果想要插入到数据库中,最好使用类似这种格式new java.sql.Data(new java.util.Date().getTime()).
而如果想从数据库中取出数据直接显示的话,就用new java.util.Date(bean.getDate())。(而且显示的日期格式固定了,是不需要格式化的)
之所以这么用,因为java.sql.Date是java.util.Date的实现类。
记住一句话:java中的编程,是面向接口的编程。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2