Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        6年前关闭。
                    
                
        

我需要找出一种可以提前一天(不包括周末)的方式。

例如:假设它的日期为2013年7月1日,而我想提前一天,因此它应该返回2013年6月28日而不是2013年6月30日。

我已经使用了很多日历库,但是经过研究后,似乎JodaTime库是一个不错的选择。

最佳答案

这样的事情应该做到:

static LocalDate oneDayBackExcludingWeekends(LocalDate date) {
    do {
        date = date.minusDays(1);
    } while (date.getDayOfWeek() == DateTimeConstants.SUNDAY ||
             date.getDayOfWeek() == DateTimeConstants.SATURDAY);
    return date;
}


请注意,您可能会更有效率:

static LocalDate oneDayBackExcludingWeekends(LocalDate date) {
    switch (date.getDayOfWeek()) {
        case DateTimeConstants.MONDAY:
            return date.minusDays(3);
        case DateTimeConstants.SUNDAY:
            return date.minusDays(2);
        default:
            return date.minusDays(1);
    }
}

10-04 22:45