2016-03-07 72 views
2

我已經開始編寫一些代碼並需要在一個月內打印所有日期,我可以通過每天添加一個日期來完成此操作,但必須縮短我失蹤的日期。這是我的代碼到目前爲止。遞增並在一個月內打印所有日期

我知道它不是最漂亮的,我想知道如何在1月的每一天增加日期時打印日期,而不必每次都不斷地每次添加1次println。

public static void main(String [] args) { 

Calendar calendar = Calendar.getInstance() 
calendar.set.(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2])); 

System.out.println(calendar.getTime()); 
calendar.add(Calendar.DATE, 1); 
System.out.println(calendar.getTime()); 

} 

} 
+4

的http:// stackoverflow.com/questions/20089549/how-to-get-all-the-dates-in-a-month-using-calender-class – ata

+0

使用循環讓您的生活變得輕鬆。 –

+0

哪個版本的Java是那個?如果8,爲什麼不使用JSR 310?如果7或更少,爲什麼你不使用喬達時間? – fge

回答

0

這是一個工作示例:

https://github.com/OpenGamma/OG-Platform/blob/master/projects/OG-Util/src/main/java/com/opengamma/util/time/LocalDateRange.java#L113

public static LocalDateRange of(LocalDate startDateInclusive, LocalDate endDate, boolean endDateInclusive) { 
    ArgumentChecker.notNull(startDateInclusive, "startDate"); 
    ArgumentChecker.notNull(endDate, "endDate"); 
    if (endDateInclusive == false && endDate.isBefore(LocalDate.MAX)) { 
     endDate = endDate.minusDays(1); 
    } 
    if (endDate.isBefore(startDateInclusive)) { 
     throw new IllegalArgumentException("Start date must be on or after end date"); 
    } 
    return new LocalDateRange(startDateInclusive, endDate); 
    } 
+0

什麼是LocalDateRange? ArgumentChecker?如果您使用的是第三方庫,則習慣性地提及它。 –

+0

我不明白這個代碼如何回答打印一個月的所有日子的問題。在這個代碼沒有一個單一的打印,輸入參數不exaplained .... –

+0

我想知道upvote的原因。這個答案是不完整的,並沒有給出答案 –

1

簡單exmple使用Java 8本地日期,asuming輸入如問題

import java.time.LocalDate; 

public class Test 
{ 
    public static void main(String[] args) 
    { 
     LocalDate ld = LocalDate.of(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2])); 
     do { 
      System.out.println(ld.toString()); 
      ld = ld.plusDays(1); 
     } while (ld.getDayOfMonth() > 1); // arive at 1st of next month 
    } 
} 
+0

這是一個簡單的java 8例子,沒有任何第三方庫或編譯器.... –

0

怎麼樣這個例子?:

@JRubyMethod(name = {"asctime", "ctime"}) 
    public RubyString asctime() { 
     DateTimeFormatter simpleDateFormat; 

     if (dt.getDayOfMonth() < 10) { 
      simpleDateFormat = ONE_DAY_CTIME_FORMATTER; 
     } else { 
      simpleDateFormat = TWO_DAY_CTIME_FORMATTER; 
     } 
     String result = simpleDateFormat.print(dt); 
     return getRuntime().newString(result); 
    } 

完整的源位置:http://code.openhub.net/file?fid=VJqxO5av-KgtoQFAp9juIzamnTc&cid=KOJoiAJBzj4&s=Increment%20and%20print%20all%20days%20in%20a%20month&pp=0&fl=Java&ff=1&filterChecked=true&fp=144796&mp,=1&ml=0&me=1&md=1&projSelected=true#L0

+0

爲什麼使用jruby進行簡單的java問題?您希望用戶下載並安裝jruby以在java中打印當月的日子? –

+0

什麼是ONE_DAY_CTIME_FORMATTER? TWO_DAY_CTIME_FORMATTER –

+0

我想知道upvote的原因。這個答案是不完整的,不會給出答案 –

1

這裏有一個簡單的例子,在打印當月所有的日子。時間部分已被設置爲零。

在這裏,我們印刷的日子三月2016

Tue Mar 01 00:00:00 MST 2016 
Wed Mar 02 00:00:00 MST 2016 
Thu Mar 03 00:00:00 MST 2016 
Fri Mar 04 00:00:00 MST 2016 
Sat Mar 05 00:00:00 MST 2016 
Sun Mar 06 00:00:00 MST 2016 
Mon Mar 07 00:00:00 MST 2016 
Tue Mar 08 00:00:00 MST 2016 
Wed Mar 09 00:00:00 MST 2016 
Thu Mar 10 00:00:00 MST 2016 
Fri Mar 11 00:00:00 MST 2016 
Sat Mar 12 00:00:00 MST 2016 
Sun Mar 13 00:00:00 MST 2016 
Mon Mar 14 00:00:00 MDT 2016 
Tue Mar 15 00:00:00 MDT 2016 
Wed Mar 16 00:00:00 MDT 2016 
Thu Mar 17 00:00:00 MDT 2016 
Fri Mar 18 00:00:00 MDT 2016 
Sat Mar 19 00:00:00 MDT 2016 
Sun Mar 20 00:00:00 MDT 2016 
Mon Mar 21 00:00:00 MDT 2016 
Tue Mar 22 00:00:00 MDT 2016 
Wed Mar 23 00:00:00 MDT 2016 
Thu Mar 24 00:00:00 MDT 2016 
Fri Mar 25 00:00:00 MDT 2016 
Sat Mar 26 00:00:00 MDT 2016 
Sun Mar 27 00:00:00 MDT 2016 
Mon Mar 28 00:00:00 MDT 2016 
Tue Mar 29 00:00:00 MDT 2016 
Wed Mar 30 00:00:00 MDT 2016 
Thu Mar 31 00:00:00 MDT 2016 

這段代碼與Java 6,Java 7的,和Java工作8

package com.ggl.testing; 

import java.util.Calendar; 

public class PrintMonth { 

    public static void main(String[] args) { 

     Calendar calendar = Calendar.getInstance(); 

     if (args.length == 2) { 
      int year = Integer.parseInt(args[0]); 
      int month = Integer.parseInt(args[1]); 
      calendar.set(year, month, 1); 
     } 

     int month = calendar.get(Calendar.MONTH); 
     calendar.set(Calendar.DAY_OF_MONTH, 1); 
     calendar.set(Calendar.HOUR_OF_DAY, 0); 
     calendar.set(Calendar.MINUTE, 0); 
     calendar.set(Calendar.SECOND, 0); 
     calendar.set(Calendar.MILLISECOND, 0); 

     while (calendar.get(Calendar.MONTH) == month) { 
      System.out.println(calendar.getTime()); 
      calendar.add(Calendar.DATE, 1); 
     } 

    } 

} 
+0

非常有幫助,謝謝 – Andrew

1
public static void main(String[] args) { 
     LocalDate date = LocalDate.of(Integer.parseInt(args[0]), Integer.parseInt(args[1]), 1); 

     for (int i = 0; i < date.lengthOfMonth(); i++) { 
      System.out.println(date); 
      date = date.plusDays(1); 
     } 

    } 
相關問題