A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sixth 中级黑马   /  2012-11-1 18:38  /  1411 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

比方说在一个项目中,有用户这样一个类,它里面有一个创建日期的属性。应该怎么把它定义,定义成什么类型的。方便在数据库中的存取。以及以后的显示使用。

2 个回复

倒序浏览
本帖最后由 吴愿涛 于 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);
    }
}
回复 使用道具 举报
在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中的编程,是面向接口的编程。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马