Как использовать SimpleDateFormat для отображения текущей даты? - PullRequest
0 голосов
/ 18 ноября 2011

Я пытаюсь отформатировать текущую дату и время, это мой код:

Date date = new Date();
SimpleDateFormat FORMATTER = new SimpleDateFormat("yyyyMMdd-HHmm");
String formattedDate=""+FORMATTER.format(date);
Log.d("XXxxxXxXXXXxxxXXXxXxxxX",formattedDate);

Что-то идет не так, потому что я получаю эту строку: 19700103-0217

Эта дата неверна, я должен получить что-то вроде этого: 20111118-1217

Как решить эту проблему?

Ответы [ 6 ]

2 голосов
/ 18 ноября 2011

Проблема в том, что ваша дата неверна. Трудно сказать, как, поскольку вы еще не показали, откуда это исходит, но это, скорее всего, проблема. Чтобы подтвердить это, используйте встроенный метод Date.toString(), который использует системный часовой пояс по умолчанию, поэтому вам нужно быть осторожным, но вы должны хотя бы увидеть правильную дату и т. Д.

Log.d("date.toString() - ", date.toString());
1 голос
/ 16 сентября 2014

Чтобы получить текущую дату.Попробуйте это

  Calendar c = Calendar.getInstance();
    System.out.println("Current time => " + c.getTime());

    SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
    String formattedDate = df.format(c.getTime());
1 голос
/ 18 ноября 2011

Если ваша цель просто показать текущую дату, тогда вы можете использовать Calendar.

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

Ex:

Calendar cal=Calendar.getInstance();
String year=String.format("%1$tY",cal);
String month=String.format("%1$tm",cal);
String day=String.format("%1$td",cal);

String hour=String.format("%1$tH",cal); // hour in 24 hour time format
String min=String.format("%1$M",cal);

String finalDateString=year+month+day+"-"+hour+min; //gives you in format like 20111118-1217

Дополнительные форматы см. this .

1 голос
/ 18 ноября 2011

Я бы сказал, что устройство (или эмулятор), на котором вы выполняете свой код, имеет неверную дату. Ваш код должен работать как положено.

В любом случае, это не относится к SimpleDateFormat, если вы используете его правильно.

0 голосов
/ 25 сентября 2013
Calendar calendar=Calendar.getInstance();

// Это даст вам текущий месяц.

Дата дата = calendar.getTime (); SimpleDateFormat format = new SimpleDateFormat ("MMM");

    String currentMonth = format.format(date);

// Вы получите текущую дату месяца.

SimpleDateFormat format1 = new SimpleDateFormat ("dd"); String currentDate = format1.format (date);

Если вам нужны другие форматы, вы можете увидеть эту ссылку: http://developer.android.com/reference/java/text/SimpleDateFormat.html

0 голосов
/ 18 ноября 2011

Ну, я могу вам помочь, но у меня есть свой код. Спроси меня, если ты что-то не получишь.

Прежде всего вы должны создать класс с любым именем, например date.class, и написать код:

public class Date{
    private Date dt;
    private String stDt;
    private String enDt;

    SRSDDate(){
        dt=new Date();
        int mn;
        int yr;

        mn=dt.getMonth();
        yr=dt.getYear();
        mn=mn+1;
        yr=1900+yr;

        stDt="1/"+mn+"/"+yr;

        switch(yr%4){
            case 0:
                if(mn==2){
                    enDt="29/"+mn+"/"+yr;
                }
                else if(mn==1||mn==3||mn==5||mn==7||mn==8||mn==10||mn==12){
                    enDt="31/"+mn+"/"+yr;
                }
                else{
                    enDt="30/"+mn+"/"+yr;
                }
            break;
            default:
                if(mn==2){
                    enDt="28/"+mn+"/"+yr;
                }
                else if(mn==1||mn==3||mn==5||mn==7||mn==8||mn==10||mn==12){
                    enDt="31/"+mn+"/"+yr;
                }
                else{
                    enDt="30/"+mn+"/"+yr;
                }
            break;
        }
    }
    public String getTodayDate(){
        return (dt.getYear()+1900)+"-"+(dt.getMonth()+1)+"-"+dt.getDate();
    }
    public String getTodayDisplayDate(){
        return dt.getDate()+"/"+(dt.getMonth()+1)+"/"+(dt.getYear()+1900);
    }
    public String getStDt(){
        return stDt;
    }

    public String getEnDt(){
        return enDt;
    }
}

После создания класса, вы должны объявить это:

Calendar FromDateCal=Calendar.getInstance();
DatePickerDialog.OnDateSetListener fd=new DatePickerDialog.OnDateSetListener() {
        public void onDateSet(DatePicker view,int year,int monthOfYear,int dayOfMonth) {
            FromDateCal.set(Calendar.YEAR, year);
            FromDateCal.set(Calendar.MONTH, monthOfYear);
            FromDateCal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            updateFromDate();
        }
};

Теперь найдите поле редактирования, в котором вы хотите отобразить дату, например:

Date dt=new Date();
FromDateText=(EditText)findViewById(R.id.FromDateText);
FromDateText.setText(dt.getStDt());

Теперь вы должны отобразить дату в окне редактирования следующим образом:

private void updateFromDate(){
        int iDay;
        int iMonth;
        int iYear;

        iDay=FromDateCal.get(Calendar.DATE);
        iMonth=FromDateCal.get(Calendar.MONTH);
        iMonth=iMonth+1;
        iYear=FromDateCal.get(Calendar.YEAR);

        String sFDate=iDay+"/"+iMonth+"/"+iYear;
        FromDateText.setText(sFDate);
}

Надеюсь, ты получил мой ответ.

...