Java如何根据一个时间,得到这个时间所在的这一周的周日?
PHPz
PHPz 2017-04-18 09:57:05
[Java讨论组]

比如给一个时间 2016-09-06(周二)就能得到2016-09-04(2016-09-06这一周的周日)

PHPz
PHPz

学习是最好的投资!

全部回复(2)
黄舟
public static String getFirstDayOfWeek(String date){        
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        
    Calendar cal = Calendar.getInstance();
    try {
        cal.setTime(sdf.parse(date));
        // Calendar默认周日为第一天, 所以设置为1
        cal.set(Calendar.DAY_OF_WEEK, 1);
        // 如果要返回00点0分0秒
        //cal.set(Calendar.HOUR_OF_DAY, 0);
        //cal.set(Calendar.MINUTE, 0);
        //cal.set(Calendar.SECOND, 0);
        //cal.set(Calendar.MILLISECOND, 0);
    } catch (ParseException e) {
            
    }        
    return sdf.format(cal.getTime());
}
迷茫

建议用Java8的新时间API,操作起来比较方便

LocalDate localDate = LocalDate.parse("2016-09-15");
LocalDate nextSunday = localDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));

就这么简单...没有以前老Date API那么麻烦,可能还要try catch,或者判断很多种情况,很多情况交给JDK自己去处理吧,现在已经封装好了方法

对于这种封装好了的方法,可以说Java8作为Java最新版本,已经把Java以前的命令式风格融入了声明式风格,代码读取来也更易读了,localDate.with就是新时间API定义的时间抽象类Temporalwith方法,参数就是一个调整TemporalAdjuster接口,代表了当前对象可以根据这个具体的调整器来调整当前对象,TemporalAdjusters.next就是生成了一个调整器,调整星期的...表示下一个,参数传的DayOfWeek.SUNDAY,表示是周日

因此完整连起来读localDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));这段代码就真的很容易了,所见即所得,把当前时间localDate按照调整器(下一个周日)进行调整并返回

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号