日期为双位数

时间:2010-10-29 19:11:33

标签: java date

我有一个代码可以获得我的一个应用程序的年,月和日。

    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编码的新手)

3 个答案:

答案 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);
 }