java比较时间
伊谢尔伦
伊谢尔伦 2017-04-18 10:53:56
[Java讨论组]

String date1 = “2017-04-06”;
String start = "2017-04";
String end = "2017-06";
java 计算data1是否在start和end之间。start和end即表示的是四月到六月

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
PHPz

如果你没用Java8:


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {

    public static void main(String[] args) throws ParseException {
        String date1 = "2017-06-06";
        String start = "2017-04";
        String end = "2017-06";

        Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse(date1);
        Date dStart = new SimpleDateFormat("yyyy-MM").parse(start);
        Calendar c = Calendar.getInstance();
        c.setTime(new SimpleDateFormat("yyyy-MM").parse(end));
        c.add(Calendar.MONTH, 1);
        Date dEnd = c.getTime();

        if (d1.after(dStart) && d1.before(dEnd)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }

    }

}
ringa_lee

如果你用上了 Java8:

import java.time.LocalDate;

public class What {

    public static void main(String[] args) throws Exception {
        String date1 = "2017-04-06";
        String start = "2017-04";
        String end = "2017-06";

        LocalDate date = LocalDate.parse(date1);

        LocalDate startDate = LocalDate.parse(start + "-01");
        LocalDate endDate = LocalDate.parse(end + "-01");
        
        endDate = endDate.plusDays(endDate.getMonth().maxLength());
        
        if (date.isAfter(startDate) && date.isBefore(endDate)) {
            System.out.println("data1 在 start 和 end 之间");
        } else {
            System.out.println("data1 不在 start 和 end 之间");
        }
    }
    
}
高洛峰

如果你没用Java8但用了Joda-time:

  public boolean between(String date){
    String start = "2017-04";
    String end = "2017-06";
    try {
        return DateTime.parse(date).isAfter(DateTime.parse(start).withDayOfMonth(1).toInstant())
            && DateTime.parse(date).isBefore(DateTime.parse(end).plusMonths(1).withDayOfMonth(1).minusDays(1).toInstant());
    }catch (Exception e){
        return false;
    }
}
PHP中文网
  1. end要转换成这个月的最后一天,比如说2017-06-30

  2. 如果格式确定为yyyy-mmyyyy-mm-dd,那么用date.compareTo(start) >= 0 && date.compareTo(end) < 0就可以了;

  3. 如果有不规范的格式,比如2017-4-6,要么转换成规范的格式,要么都转换成Date或long(Date本质就是long),再进行比较。

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

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