2013-01-07 6 views
7

Possiedo un DatePicker. La mia app sta inviando una notifica. Voglio visualizzare la data nel formato MMG-gg-aaaa del 01-07-2013. Si prega di controllare il mio codice qui sotto:Data formato Android a MM-GG-AAAA da Datepicker

//---Button view--- 
    Button btnOpen = (Button) findViewById(R.id.btEventDone); 
    btnOpen.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      String strT = title.getText().toString(); 
      String strDes = description.getText().toString(); 

      // check if user did not input anything 
      if(strT.isEmpty() || strDes.isEmpty()){ 

       Toast.makeText(getBaseContext(), "You have blank fields!", Toast.LENGTH_SHORT).show(); 

      } 
      else{ 

      //---use the AlarmManager to trigger an alarm--- 
      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);     

      //---get current date and time--- 
      Calendar calendar = Calendar.getInstance();  

      //---sets the time for the alarm to trigger--- 
      calendar.set(Calendar.YEAR, date.getYear()); 
      calendar.set(Calendar.MONTH, date.getMonth()); 
      calendar.set(Calendar.DAY_OF_MONTH, date.getDayOfMonth());     
      calendar.set(Calendar.HOUR_OF_DAY, time.getCurrentHour()); 
      calendar.set(Calendar.MINUTE, time.getCurrentMinute()); 
      calendar.set(Calendar.SECOND, 0); 

      //---PendingIntent to launch activity when the alarm triggers---      
      Intent i = new Intent(CalendarEvent.this, DisplayNotification.class); 

      year = calendar.get(Calendar.YEAR); 
      month = calendar.get(Calendar.MONTH); 
      day = calendar.get(Calendar.DAY_OF_MONTH); 

      hour = calendar.get(Calendar.HOUR); 
      minute = calendar.get(Calendar.MINUTE); 

      Date d = new Date(year, month, day); 
      SimpleDateFormat dateFormatter = new SimpleDateFormat(
          "MM-dd-yyyy"); 
      String strDate = dateFormatter.format(d); 

      String strTitle = title.getText().toString(); 
      String strDescription = description.getText().toString(); 
      strDate = String.valueOf(month) + "-" + String.valueOf(day) + "-" + String.valueOf(year); 

      StringBuilder sb = new StringBuilder(); 
      if(hour>=12){      
       sb.append(hour-12).append(":").append(minute).append(" PM"); 
      }else{ 
       sb.append(hour).append(":").append(minute).append(" AM"); 
      } 
      String strTime = sb.toString(); 


      //---assign an ID of 1--- 
      i.putExtra("NotifID", notifID); 
      i.putExtra("Title", strTitle); 
      i.putExtra("Description", strDescription); 
      i.putExtra("Date", strDate ); 
      i.putExtra("Time", strTime); 

      PendingIntent displayIntent = PendingIntent.getActivity(
       getBaseContext(), notifID, i, 0);    


      //---sets the alarm to trigger--- 
      alarmManager.set(AlarmManager.RTC_WAKEUP, 
       calendar.getTimeInMillis(), displayIntent); 
      finish(); 
     } 

     } 
    }); 

} 

AlarmDetails:

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.alarmdetails); 

    //---look up the notification manager service--- 
    NotificationManager nm = (NotificationManager) 
     getSystemService(NOTIFICATION_SERVICE); 

    title = (EditText) findViewById (R.id.etDetailTitle); 
    description = (EditText) findViewById (R.id.etDetailDescription); 
    date = (EditText) findViewById (R.id.etDetailDate); 
    time = (EditText) findViewById (R.id.etDetailTime); 
    done = (Button) findViewById (R.id.btnAlarmDone); 

    done.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      finish(); 
     } 
    }); 

    //---cancel the notification--- 
    nm.cancel(getIntent().getExtras().getInt("NotifID")); 


    String strTitle = getIntent().getExtras().getString("Title"); 
    String strDescription = getIntent().getExtras().getString("Description"); 
    strDate = getIntent().getExtras().getString("Date"); 
    String strTime = getIntent().getExtras().getString("Time"); 
    title.setText(strTitle); 
    description.setText(strDescription); 
    date.setText(strDate); 
    time.setText(strTime); 


} 

DisplayNotification:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

//---get the notification ID for the notification; 
// passed in by the NotifyActivity--- 
int notifID = getIntent().getExtras().getInt("NotifID"); 
String strTitle = getIntent().getExtras().getString("Title"); 
String strDescription = getIntent().getExtras().getString("Description"); 
String strDate = getIntent().getExtras().getString("Date"); 
String strTime = getIntent().getExtras().getString("Time"); 

//---PendingIntent to launch activity if the user selects 
// the notification--- 
Intent i = new Intent(DisplayNotification.this, AlarmDetails.class); 
i.putExtra("NotifID", notifID); 
i.putExtra("Title", strTitle); 
i.putExtra("Description", strDescription); 
i.putExtra("Date", strDate); 
i.putExtra("Time", strTime); 

PendingIntent detailsIntent = 
    PendingIntent.getActivity(this, 0, i, 0); 

NotificationManager nm = (NotificationManager) 
    getSystemService(NOTIFICATION_SERVICE); 
Notification notif = new Notification(
    R.drawable.ic_launcher, 
    "iHealthFirst: Notification!", 
    System.currentTimeMillis()); 

CharSequence from = "iHealthFirst - New Notification"; 
CharSequence message = "This is your alert, click to view";   
notif.setLatestEventInfo(this, from, message, detailsIntent); 
notif.flags = Notification.FLAG_INSISTENT; 
notif.defaults |= Notification.DEFAULT_SOUND; 

//---100ms delay, vibrate for 250ms, pause for 100 ms and 
// then vibrate for 500ms--- 
notif.vibrate = new long[] { 100, 250, 100, 500};   
nm.notify(notifID, notif); 

//---destroy the activity--- 
finish(); 
} 

Il mio attuale applicazione solo lo schermo in questo formato M-d-aaaa. Ho letto che dovremmo usare SimpleDateFormat, ma non so come usarlo nella mia app. Qualcuno può aiutare? Grazie.

risposta

11

Controllare questo:

date format change in datepicker and calendar

year = calendar.get(Calendar.YEAR); 
    month = calendar.get(Calendar.MONTH); 
    day = calendar.get(Calendar.DAY_OF_MONTH); 

    if(month < 10){ 

     month = "0" + month; 
    } 
    if(day < 10){ 

     day = "0" + day ; 
    } 
    searchText.setText(day + "-" + month + "-" + year); 
+0

Grazie, la soluzione funziona per me! –

2

È possibile aggiungere questo codice:

Date d = new Date(year, month, day); 
SimpleDateFormat dateFormatter = new SimpleDateFormat(
       "MM-dd-yyyy hh:mm"); 
strDate = dateFormatter.format(d); 

dopo

year = calendar.get(Calendar.YEAR); 
month = calendar.get(Calendar.MONTH); 
day = calendar.get(Calendar.DAY_OF_MONTH); 

hour = calendar.get(Calendar.HOUR); 
minute = calendar.get(Calendar.MINUTE); 

Così il vostro strDate sarà in formato desiderato (MM-GG-AAAA)

+0

forse vuoi dire d in strDate = dateFormatter.format (date); non data? thnks –

+0

@bEtTyBarnes, Sì, sarà "d" invece della variabile "data". Sto modificando –

+0

Grazie! Ci proverò. –

1
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class MainClass { 
    public static void main(String[] args) { 
    String pattern = "MM-dd-yyyy"; 
    SimpleDateFormat format = new SimpleDateFormat(pattern); 
    try { 
     Date date = format.parse("01-07-2013"); 
     System.out.println(date); 
    } catch (ParseException e) { 
    e.printStackTrace(); 
    } 

    System.out.println(format.format(new Date())); 
} 
} 

Speranza la sua utile.

È inoltre possibile refer to the documentation.

1

Desidero visualizzare la data nel formato 01-07-2013 MM-gg-aaaa.

sì, è possibile farlo da Below Steps.

Fase 1: dovete prima convertire la stringa a particolari Formato data

Fase 2: Usando SimpleDateFormat convertire la data in formato MM-GG-AAAA

Fase 3 : Converti in stringa e usalo.

è possibile Utente Sotto Codice per questo.

public class DateFormat { 

    public static void main(String[] args) { 
    // Put here what your are getting as String 
    String mytime="Jan 7, 2013"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat(
      "MMM dd, yyyy"); //Step1: Convert yout String to perticular Date Formate according to your Date String your are getting 
    Date myDate = null; 
    try { 
     myDate = dateFormat.parse(mytime); 

    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    //Step2 
    SimpleDateFormat timeFormat = new SimpleDateFormat("MM-dd-yyyy"); 
    String finalDate = timeFormat.format(myDate); 
    //Step3: Here you will get your Final Date. Set your String now to textview. 
     } 
} 

Spero che ti possa aiutare.

0

provare in questo modo:

private int m_month, m_year, m_day; 
SimpleDateFormat dateParser = new SimpleDateFormat("MM-dd-yyyy", 
      Locale.ENGLISH); 
m_month = m_calendar.get(Calendar.MONTH) + 1; 
m_year = m_calendar.get(Calendar.YEAR); 
m_day = m_calendar.get(Calendar.DAY_OF_MONTH); 
//for the datepicker listener. 
m_calendar.set(Calendar.YEAR, p_year); 
m_calendar.set(Calendar.MONTH, p_monthOfYear); 
m_calendar.set(Calendar.DAY_OF_MONTH, p_dayOfMonth); 
String m_sDate = dateParser.format(m_calendar.getTime()).toString(); 
0

ho provato in seguito nel mio progetto. Potrebbe aiutarti. Chiedi se hai qualche domanda.

try{ 
    SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy"); 
    Date originalDate = new Date(); //it will give today's date. 
    String dateString = sdf.format(originalDate); 
    Date formattedDate = sdf.parse(dateString); 

}catch(Exception e){ 
    e.printStackTrace(); 
} 
1

basta usare questo codice ..

date.setOnClickListener(new OnClickListener() 
     { 

      public void onClick(View v) 
      { 
       DatePickerDialog dateDlg = new DatePickerDialog(New_Quote_Activity.this, new DatePickerDialog.OnDateSetListener() 
       { 

         public void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth) 
         { 
           CharSequence strDate = null; 
            Time chosenDate = new Time();   
            chosenDate.set(dayOfMonth, monthOfYear, year); 
            long dtDob = chosenDate.toMillis(true); 

            strDate = DateFormat.format("MM/dd/yyyy", dtDob); 

            txtDate.setText(strDate); 
         }}, year,month,day); 

         dateDlg.show(); 
       } 
     }); 
7

provare questo

int year = mDatePicker.getYear(); 
int month = mDatePicker.getMonth(); 
int day = mDatePicker.getDayOfMonth(); 

Calendar calendar = Calendar.getInstance(); 
calendar.set(year, month, day); 

SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy"); 
String strDate = format.format(calendar.getTime()); 
+0

Questa soluzione è molto elegante. –

0

Prova questo:

 CharSequence formatted = DateFormat.format("MM/dd/yyyy", mDueDate); 
     mDueDateView.setText(formatted); 
0

Un modo semplice per fare questo potrebbe essere per raccogliere semplicemente i dati e quindi utilizzare String.format:

int year = calendar.get(Calendar.YEAR); 
    int month = calendar.get(Calendar.MONTH) + 1; 
    int day = calendar.get(Calendar.DAY_OF_MONTH); 

    String dateString = String.format("%02d-%02d-%d", month, day, year); 
    ((TextView) m_view.findViewById(R.id.dob)).setText(dateString);