我有一个代码可以获得我的一个应用程序的年,月和日。
package com.cera.hyperionUtils;
import java.util.*;
public class HypDate {
public static int curdate(int field)
{
//1. Specify integer 1 for YEAR, 2 for MONTH, 5 DAY_OF_MONTH
Calendar c = new GregorianCalendar();
c.setLenient(true); //Allow overflow
//2. Extract and Return result
if (field == 2) {
field = c.get(Calendar.MONTH) + 1;
}
return c.get(field);
}
public static void main(String[] args)
{
System.out.println(HypDate.curdate(2));
}
}
但是,当我通过2时,它正确地给出了0年和白天的打印.....我也试图让月份成为两位数。 (如01表示1)
有人可以帮助我......? (我是java编码的新手)
答案 0 :(得分:5)
您可能只想使用SimpleDateFormat
格式化它,而不是一个一个地返回这些内容。
我想要一个日期作为年 - 月 - 日:
// Necessary imports
import java.text.DateFormat;
import java.text.SimpleDateFormat;
// Declare class and stuff before this
public static String getFormattedDate() {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return df.format(new Date());
}
public static void main(String[] args) {
System.out.println(getFormattedDate());
}
输出2010-10-29
编辑:
由于您只想要月份,您可以这样做:
public static String getFormattedMonth() {
DateFormat df = new SimpleDateFormat("MM");
return df.format(new Date());
}
答案 1 :(得分:3)
if (field == 2) {
field = c.get(Calendar.MONTH) + 1;
}
return c.get(field);
您将正确的月份作为索引检索,然后使用该索引检索另一个未知的字段,并将其与常量的保存方式相关联。只需返回之前的值,而不使用第二个get
。
也许你的意思
if (field == 2) {
field = Calendar.MONTH;
}
return c.get(field) + 1;
但我不明白为什么要重新定义那些使用已经提供的常量的常量..
答案 2 :(得分:1)
问题来自这样一个事实:当你获得月份信息时,你会两次调用c.get(),这是你不想做的。相反,您应该在获得第一个值后直接返回
//1. Specify integer 1 for YEAR, 2 for MONTH, 5 DAY_OF_MONTH
Calendar c = new GregorianCalendar();
c.setLenient(true); //Allow overflow
//2. Extract and Return result
if (field == Calendar.MONTH) {
return c.get(field) + 1; //because Java months are 0-based
} else {
return c.get(field);
}