2013-01-17 72 views
2

可能重複:
joda time - add weekdays to date如何減去X平日

我如何使用喬達庫從日期減去一定數量的平日(即不包括週末) ?

如果輸入日期是2013年1月14日(星期一),我減去1天,我希望結果是2013年1月11日(星期五)。我怎樣才能做到這一點?

+0

減去2013年1月14日的一天不是1月11日! –

+0

確實沒有意義,它會是第13名? –

+5

他想排除週末(週六和週日)。 – Swapnil

回答

3

可能沒有辦法直接使用Joda庫,但可以編寫自己的Java功能。在以下示例中,subtractWeekdays(d, num)方法會將日期d滾動回給定日期的給定num。根據需要,此示例的輸出爲Fri Jan 11 00:00:00 CST 2013

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

public class SimpleTest { 
    // NOTE: the input num must be positive. 
    public static Date subtractWeekdays(Date d, int num) { 
     int count = 0; 
     Calendar c = Calendar.getInstance(); 
     c.setTime(d); 

     do { 
     c.add(Calendar.DAY_OF_YEAR, -1); 
     if(isWeekday(c.get(Calendar.DAY_OF_WEEK))) { 
      ++count; 
     } 
     } while(count < num); 

     return c.getTime(); 
    } 

    public static boolean isWeekday(int dayOfWeek) { 
     return ((dayOfWeek != Calendar.SATURDAY) && (dayOfWeek != Calendar.SUNDAY)); 
    } 

    public static void main(String[] argv) { 
     try { 
     SimpleDateFormat dateFormat = new SimpleDateFormat("MMM d, y"); 
     Date d = dateFormat.parse("Jan 14, 2013"); 
     Date d2 = subtractWeekdays(d, 1); 
     System.out.println(d2); 
     } catch(Exception ex) {} 
    } 
}