2012-10-01 36 views
0

我有家庭作业,涉及进入2个整数(每月&年),我不知道如何做到这一点的用户,我寻觅了小日历类文档中,但我没有找到我所寻找的。 我打算做的主要事情是打印一个日历,就像在Windows中那样,我从用户那里得到的唯一的输入是月份和年份的数字,我需要找到一种方法来查找月份的天气31日,30日,29日或28日以及该月开始的那一天。 http://lifehacker.com/assets/2006/06/vista-windows-calendar.jpg这是我想要做的,但作为文本没有打印从其他月份的日子。如何通过输入整数的月份和年份来查找特定月份?

+1

哪一点会导致你的问题?目前尚不清楚您是否已经将用户输入解析为“int”值,或者您想将结果作为结果进行分析...... –

+3

你应该发布你试过的东西。 –

+3

要扩展@ JonSkeet的评论,你究竟是指“找到一个特定月份?”你已经有了月份和年份的数字 - 你需要哪些关于它的更多信息? – jrajav

回答

1

您可以使用java.util.Date此:

int month = 3 ; // Input 
int year = 2012 ; // Input 
Date date = new Date() ; 
date.setMonth(month) ; 
date.setYear(year) ; 

但由于Date已被弃用,你将不得不使用java.util.Calendar代替。等效功能如下:

Calendar.set(Calendar.MONTH, month) ; 
Calendar.set(Calendar.YEAR, year) ; 
+2

这可能适合做家庭作业,但Date类已被弃用很长一段时间了。 – jrajav

+1

请注意,这里的月份以0为基数(即月份1是2月份)。 –

+1

你应该更喜欢Calendar类。 –

1

由于这是作业,所以我没有把所有的豆类都洒出来。你必须弄清楚其余的。

不知道你尝试过什么或者什么你找到一个个月平均值,我想你想获得基于在一年零一个月的Date对象。

Calendar类是一个正确的开始。首先,您应该使用getInstance()方法获得实例,特别考虑set(int field, int value)方法以设置该日历的年份和月份。

如果您想知道如何知道您正在设置哪个字段,请尝试使用由Calendar本身定义的不同常量值(按惯例,这些常量值以大写字母命名,仅供您查找)。

最后,你只需要获得Date,通过getTime()方法。

编辑

Calendar类的方法,并通过使用组,您可以拿出您正在搜索的月份。

使用方法,如用getActualMaximum(int field)Calendar.DAY_OF_MONTH。这实际上是答案之一。另一个是相似的,我把它留给你。

提示:创建日历,并与领域发挥,尝试在每个月的日设置为1(第一天),当月到你需要从中获取信息的一个。

+0

我编辑了这个问题来添加更多的细节,抱歉不清楚:) – user1712638

+0

@ user1712638我现在明白了!我编辑了答案。 – Gamb

1

看一看DateFormatSymbols。这有方法来检索月份。然后,您可以使用索引现在的位置是在阵列(月数),以获得每月

String[] months = new DateFormatSymbols(Locale.getDefault()).getMonths(); 
    System.out.println(months[0]); 
    System.out.println(months[11]); 

由于它的功课,我会让你明白为什么[0]给Januaray和[11]给人月

+0

+1,用于心灵感应地推测他可能想要的是NAMES这个月...甚至没有出现过我。由于它是功课,一个更好的练习可能会是一个开关/情况,但是。 ;) – jrajav

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

class PrintCalendar { 
    public static void main(String args[]) { 
     Calendar c = Calendar.getInstance(); 

     int month = 3; 
     int year = 2011; 

     c.set(year, month, 1); // Set c's time to first day of specified month/year 

     // Day of week (by numerical index) can also be obtained programmatically with c.get(Calendar.DAY_OF_WEEK) 
     System.out.println("First day of month falls on a " + new SimpleDateFormat("EEEE").format(c.getTime())); 
     // "Actual maximum" means the maximum in the current timeframe; that is, it will return 29 for a February in a leap year 
     System.out.println("Month has " + c.getActualMaximum(Calendar.DAY_OF_MONTH) + " days"); 
    } 
} 
+0

我不明白这些命令做什么“新的SimpleDateFormat(”EE“)。格式(c.getTime())” – user1712638

+0

对于那部分,你可能真的想要c.get(Calendar.DAY_OF_WEEK);我编辑添加此作为评论。无论如何,它所做的是从Calendar对象中抽出时间,并根据格式字符串将其格式化为字符串。在这种情况下,完整版本的格式字符串是“EE”或“EEEE”,其中E是与星期几对应的格式代码。谷歌“java SimpleDateFormat”为文档,将进一步详细解释它。查看日历文档和一些示例也会有所帮助。 – jrajav