【问题标题】:Finding difference of days from start and end using joda? [duplicate]使用joda查找从开始到结束的天数? [复制]
【发布时间】:2015-03-26 12:58:32
【问题描述】:

我想从 startDate 和 endDate 中找出是多少天。从我的 json 响应中,我可以在 String 中取回这些:

String startDate = "Fri, 10 Jan 2015 23:10:04 +0000";
String endDate = "Mon, 26 Jan 2015 11:26:04 +0000";

我将如何使用 joda 计算并让我返回正确的天数(因此:numOfDays = endDate - startDate)??

public int getNumberOfDays(String startDate, String endDate) {
    String pattern = "EEE, dd MMM yyyy HH:mm:ss +xxxx";
    .....

    // quick test on startDate
    DateTime dateTime = DateTime.parse(startDate, DateTimeFormat.forPattern(pattern));
    System.out.println("The day should be 10 but it yields 9 --> " + dateTime.getDayOfMonth());

}

【问题讨论】:

  • String startDate = "2015 年 1 月 10 日星期五 23:10:04 +0000";字符串模式 = "EEE, dd MMM yyyy HH:mm:ss +xxxx";有谁知道模式是否正确?我正在努力解析正确的'EEE',我不知道它是否与那个或','逗号有关。如果我删除“Fri”,因此删除“EEE”,那么我就能正确地得到第 (10) 天。

标签: java json jodatime


【解决方案1】:

使用Days乔达图书馆类

Days days=Days.daysBetween(startDate.toLocalDate(), endDate.toLocalDate()).getDays();
int noOfDays=days.getDays();

作为替代方案,我们也可以使用 Java 8 日期和时间 API

public void days_between_two_dates_in_java_with_java8 () {

    LocalDate startDate = LocalDate.now().minusDays(1);
    LocalDate endDate = LocalDate.now();

    long days = Period.between(startDate, endDate).getDays();


    // or 

    long days2 = ChronoUnit.DAYS.between(startDate, endDate);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多