这是我从日期选择器中选择日期的代码。

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;

public class CurrentDateActivity extends Activity {
/** Called when the activity is first created. */

private EditText mDateDisplay,mDateSelect;
private int mYear,mMonth,mDay;
private int year,month,day;

Button selectBtn = null;
Calendar c = null;
static final int DATE_DIALOG_ID = 0;

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

    selectBtn = (Button)findViewById(R.id.BtnSubmit);
    mDateDisplay = (EditText) findViewById(R.id.currentDate);
    mDateSelect = (EditText)findViewById(R.id.dateofBirth);

    // add a click listener to the button
    mDateSelect.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            showDialog(DATE_DIALOG_ID);
        }
    });

    getCurrentDate();//get the current date


    // display the current date
    mDateDisplay.setText(getString(R.string.strSelectedDate,
            new StringBuilder()
                    // Month is 0 based so add 1
                    .append(mDay).append("/")
                    .append(mMonth + 1).append("/")
                    .append(mYear).append(" "))
                    );
}

private void getCurrentDate(){
     // get the current date
    c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);
}

// updates the date in the EditText
private void updateDisplay() {
    mDateSelect.setText(getString(R.string.strSelectedDate,
            new StringBuilder()

            .append(mDay).append("/")
            .append(mMonth + 1).append("/")
            .append(mYear).append(" "))
            );
}

// the callback received when the user "sets" the date in the dialog
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
     public void onDateSet(DatePicker view, int year,  int monthOfYear, int dayOfMonth) {
        mYear = year;
        mMonth = monthOfYear;
        mDay = dayOfMonth;
        updateDisplay();
     }
};



@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:

        return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,
                mDay);
    }
    return null;
}

}


一切都很好,但是现在我想同时获取当前日期和用户在另一个活动中输入的日期,以便计算它们之间的差异。但是我无法理解如何通过日期约会。请帮助

最佳答案

如果要使用共享首选项怎么办?

    //get access to the shared preferences
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = preferences.edit();


    //get the current time
    Date now =new Date();

    //create timestamp from the time the user picked
    @SuppressWarnings("deprecation")
    @Deprecated
    Timestamp timestamp = new Timestamp(mYear, mMonth, mDay, now.getHour, now.getMinute,   0, 0);

    //store the timestamp in your shared preferences
    editor.putString(getResources().getString(R.string.calcDate),  timestamp.toString );
    editor.apply();



     //And then in your next activity, you can pull the value back out like
     //Pull the long timestamp back out from the shared preferences
     long pickedTs = Long.parseLong(preferences.getString(getResources().getString(R.string.calcDate),   ""));
     //Then create a new Date object using the timestamp
     Date pickedDate = new Date(pickedTs);
     //Then clear that preference for the next time
     editor.putString(getResources().getString(R.string.calcDate),  "");
     editor.apply();


这类似于我当前在应用程序中使用的系统。 http://developer.android.com/reference/android/content/SharedPreferences.html
http://docs.oracle.com/javase/7/docs/api/java/sql/Timestamp.html
可能有一种更性感的方式来执行此操作,但这只是我的建议。希望能帮助到你

09-10 07:22
查看更多