Дата в виде двойной цифры - PullRequest
       6

Дата в виде двойной цифры

2 голосов
/ 29 октября 2010

У меня есть код, чтобы получить год, месяц и день для одного из моих приложений.

    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 ]

5 голосов
/ 29 октября 2010

Вместо того, чтобы возвращать их по одному, вы можете просто использовать 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

Edit:

Так как вы просто хотите месяц, вы можете сделать это:

public static String getFormattedMonth() {
    DateFormat df = new SimpleDateFormat("MM");

    return df.format(new Date());
}
3 голосов
/ 29 октября 2010
   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;

, но я не понимаю, почему вы переопределяете те константы, которые используют ужепри условии, ..

1 голос
/ 29 октября 2010

Проблема заключается в том, что когда вы получаете информацию о месяце, вы дважды вызываете 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);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...