如何使用SimpleDateFormat显示当前日期?

时间:2011-11-18 11:17:18

标签: android date simpledateformat

我正在尝试将当前日期和时间格式化,这是我的代码:

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

出现问题,因为我收到了这个字符串:19700103-0217

该日期不正确,我应该得到这样的结果:20111118-1217

如何解决这个问题?

6 个答案:

答案 0 :(得分:2)

问题是您的日期不正确。很难说如何,因为你没有显示它来自哪里,但这几乎肯定是问题所在。要确认这一点,请使用内置的Date.toString()方法 - 使用系统默认时区,因此您需要小心,但至少应该看到正确的日期等。

Log.d("date.toString() - ", date.toString());

答案 1 :(得分:1)

我会说你执行代码的设备(或模拟器)的日期不正确。您的代码应该按预期工作。

在任何情况下,它都与SimpleDateFormat无关,您使用它的方式是正确的。

答案 2 :(得分:1)

如果您的目标只是显示当前日期,那么您可以使用Calendar

使用日历,很容易以所需格式获取日期。

例如:

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

答案 3 :(得分:1)

获取当前日期。试试这个

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

    SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
    String formattedDate = df.format(c.getTime());

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

好吧,我可以帮助你,但我有自己的代码。问你,如果你没有得到什么。

首先,您必须创建一个类似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);
}

我希望你能得到答案。