date - Java获取响应的日期时间,这样写是否合理?

查看:104
本文介绍了date - Java获取响应的日期时间,这样写是否合理?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在java中,这样获取响应的时间是否合理?

/**
 * 获取当前日期指定几个月前的日期
 * @return
 */
public static Date getNMonthBefore(int amount) {
    Date now = new Date();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(now);
    calendar.add(calendar.MONTH, amount);
    Date dNMonthBefore = calendar.getTime();
    return dNMonthBefore;
}


/**
 * 获取本年的开始时间
 *
 * @return
 */
public static Date getBeginTimeOfYear(int amount) {
    Date date = null;
    Calendar cal = Calendar.getInstance();
    try {
        cal.add(Calendar.YEAR, amount);
        cal.set(Calendar.MONTH, 0);
        cal.set(Calendar.DATE, 1);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return cal.getTime();
}
/**
 * 获取当前年是那一年
 *
 * @return
 */
public static Integer getNowYear() {
    Calendar calendar = Calendar.getInstance();
    return calendar.get(Calendar.YEAR);
}
/*
* 当前年的最后时间
* */
public static Date getEndTimeOfYear() {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, getNowYear());
    cal.set(Calendar.MONTH, Calendar.DECEMBER);
    cal.set(Calendar.DATE, 31);
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.SECOND, 59);

    return cal.getTime();
}

解决方案

  1. 代码结果应该没什么问题,有的话也是逻辑问题。
  2. 楼上说的这个建议题主可以试一试。主要是date类存在诸多问题,即使是Calender类也存在多线程下不同步等问题,所以可以考虑采用java.time
  3. 指出我对你写的代码的一些看法:

  • Calendar calendar = Calendar.getInstance();这句代码在每个方法中都出现了,所以你需要将这句代码提炼出来单独生成一个方法比较合适。你可能会问我提炼成一个方法也需要在每个方法中使用呀,但是你想想啊,加入你获取Calender的方法改变了那么你改动的话只需要改动一处即可,而不是每个方法都改一次,对不对。这样的话算是减少了代码的耦合度。或者说你不用提炼成一个方法直接写成public static Calendar cal = Calendar.getInstance();这样你也不用每个类都写一次了。
  • 不知道你getBeginTimeOfYear方法中Date date = null有何意义
  • 另外还有一个想法,题主可以考虑对Calendar的set方法进行包装一下,就如同我上面所说,当一段代码多次出现,就说明代码重复度太高,可以考虑提炼成方法。比如说我们都用过jdbc对吧,每次查数据或者插入数据时都需要使用jdbc的set或者get方法一一赋值,将他提炼成一个方法或者类,这样就提高了代码的可重复利用,下次你在要用的时候可以考虑把它打包成jar包。
  • 就是这样ヾ(@^▽^@)ノ

这篇关于date - Java获取响应的日期时间,这样写是否合理?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆