2013-01-07 34 views
7

Tôi có một bộ đếm ngày. Ứng dụng của tôi đang đẩy thông báo. Tôi muốn hiển thị ngày ở định dạng MM-dd-yyyy 01-07-2013. Vui lòng kiểm tra mã của tôi dưới đây:Ngày định dạng Android cho MM-DD-YYYY từ 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(); 
} 

ứng dụng hiện tại của tôi chỉ hiển thị trong định dạng này M-d-yyyy. Tôi đã đọc rằng chúng ta nên sử dụng SimpleDateFormat, nhưng tôi không biết cách sử dụng nó trong ứng dụng của mình. Có ai giúp được không? Cảm ơn.

Trả lời

11

Kiểm tra này:

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

Cảm ơn giải pháp ur hoạt động cho tôi! –

2

Bạn có thể thêm mã này:

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

sau

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); 

Vì vậy strDate của bạn sẽ được ở định dạng mà bạn muốn (MM-dd-yyyy)

+0

có thể ý bạn là d trong strDate = dateFormatter.format (ngày); không hẹn hò? thnks –

+0

@bEtTyBarnes, Có, nó sẽ là 'd' thay vì 'ngày' biến. Tôi đang chỉnh sửa –

+0

Cảm ơn! Tôi sẽ thử cái này. –

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())); 
} 
} 

Hy vọng nó Hữu ích.

Bạn cũng có thể refer to the documentation.

1

Tôi muốn hiển thị ngày ở định dạng MM-dd-yyyy 01-07-2013.

có bạn có thể thực hiện việc này bằng các bước dưới đây.

Bước 1: bạn Đầu tiên phải chuyển đổi chuỗi của bạn để định dạng ngày đặc biệt

Bước 2: Sử dụng SimpleDateFormat Chuyển đổi ngày của bạn sang định dạng MM-dd-yyyy

Bước 3 : Chuyển đổi thành chuỗi và sử dụng nó.

bạn có thể sử dụng mã bên dưới cho điều này.

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. 
     } 
} 

Hy vọng nó sẽ giúp bạn.

0

Hãy thử cách này:

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

tôi đã cố gắng sau đây trong dự án của tôi. Nó có thể giúp bạn. Hỏi xem bạn có bất kỳ truy vấn nào không.

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

chỉ cần sử dụng mã này ..

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

thử này

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

Giải pháp này rất thanh lịch. –

0

Hãy thử điều này:

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

Một cách đơn giản để làm điều này có thể chỉ đơn giản là thu thập dữ liệu và sau đó sử dụng 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); 
Các vấn đề liên quan