我试图实施图表来显示一些基于区间的数据。
对于orizontal轴标签,我需要一个包含所有文本标签的数组。
问题在于:
我必须根据传递的GregorianCalendar startDate, GregorianCalendar endDate
以编程方式生成此数组(并且几个月没有相同的天数)
例如假设我需要一张从 7月7日到 8月5日的图表,如图所示
所需的标签数组必须
String labels[]={"lug 7","","","","","","","","lug 14","","","","","","","lug 21","","","","","","","lug 28","","","","ago 4",""}
欢迎任何帮助
答案 0 :(得分:1)
一个简单的方法来确定一个月中的天数,无论闰年等,只要您的start
/ endDate
有足够的信息,getMaximum()
就像这样在这个例子中......
public static void main(String...args) {
// get a calendar instance instantiated with today's date
// this would be your start or end date in your program
GregorianCalendar gc = new GregorianCalendar();
System.out.println(gc.getActualMaximum(Calendar.DAY_OF_MONTH));
}
输出:31
然后,您将根据您的要求和简单的数学检查来处理填充数组。
修改强>
回应评论,这是一个使用评论中的开始和结束日期的简单示例。
public static void main(String...args) {
GregorianCalendar startDate =
new GregorianCalendar(2014, GregorianCalendar.JUNE, 26);
GregorianCalendar endDate =
new GregorianCalendar(2014, GregorianCalendar.OCTOBER, 9);
while (startDate.get(Calendar.MONTH) <= endDate.get(Calendar.MONTH)) {
System.out.println(startDate.getActualMaximum(Calendar.DAY_OF_MONTH));
startDate.add(Calendar.MONTH, 1);
}
}
输出:
30 31 31 30 31
你显然还有更多工作要处理任何范围,但这表明你可以使用我的建议来完成。我不太确定你对阵列进行硬编码是什么意思。如果你建议你每月使用一个数组,你可以但你仍然需要提供闰年检查。