【问题标题】:How to use SimpleDateFormat to show the current Date?如何使用 SimpleDateFormat 显示当前日期?
【发布时间】:2011-11-18 11:17:17
【问题描述】:

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

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

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

那个日期不正确,我应该得到这样的东西:20111118-1217

如何解决这个问题?

【问题讨论】:

标签: android date simpledateformat


【解决方案1】:

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

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

【讨论】:

  • 我用这个“Date date = new Date()”创建日期,它必须按照文档中的说明用实​​际日期初始化。我用完整的代码编辑了我的问题
  • @AndroidUser99:设备/模拟器似乎没有正确的日期/时间。您是否按照我的建议尝试了额外的日志记录?
【解决方案2】:

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

无论如何,它与SimpleDateFormat无关,你使用它的方式是正确的。

【讨论】:

    【解决方案3】:

    如果您的目标只是显示当前日期,那么您可以使用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

    【讨论】:

      【解决方案4】:

      获取当前日期。试试这个

        Calendar c = Calendar.getInstance();
          System.out.println("Current time => " + c.getTime());
      
          SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
          String formattedDate = df.format(c.getTime());
      

      【讨论】:

        【解决方案5】:
        Calendar calendar=Calendar.getInstance();
        

        //这将为您提供当前月份。

        日期日期 = calendar.getTime(); SimpleDateFormat 格式 = 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

        【讨论】:

          【解决方案6】:

          好吧,我可以帮你,但我有自己的代码。有什么不懂的可以问我。

          首先你必须创建一个像 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);
          }
          

          希望你能得到我的回答。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-04-10
            • 2019-06-01
            • 1970-01-01
            • 2014-05-22
            • 2015-12-08
            • 1970-01-01
            • 1970-01-01
            • 2019-08-22
            相关资源
            最近更新 更多