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

发布于 2022-09-05 10:30:11 字数 1376 浏览 21 评论 0

在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();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

流殇 2022-09-12 10:30:11
  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包。
  • 就是这样ヾ(@^▽^@)ノ
机场等船 2022-09-12 10:30:11

结果上看应该没什么问题。不过如果你用的是java8,我建议你使用java8新增的java.time包下的时间日期类处理,不要再使用很久不维护的Calender了,那是老旧的用法了。

参考: https://www.javabrahman.com/q...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文