2015年9月24日 星期四

android 日期比較

版面要加入兩個 textView 及 一個 Button (textView1, textView2, ChooseDateBtn)
此例以按選擇日子與現時日子作相減, 日子以微秒計算, 所以用 getTimeInMillis() 取得微秒後相減, 得出結果後再轉為秒, 分, 時, 日.

1000微秒 = 1秒

如要將時分秒設定為 0 用作計算, 可用 clear, 以下面為例, 現時日子可加入以下三句便可將時分秒設定為 0.

rightNow.clear(Calendar.HOUR);
rightNow.clear(Calendar.MINUTE);
rightNow.clear(Calendar.SECOND);


import android.app.DatePickerDialog;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class MainActivity extends ActionBarActivity {

    Calendar rightNow = Calendar.getInstance();
    TextView DisplayDate1;
    TextView DisplayDate2;
    int cmonth, rmonth;


    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button changeDate = (Button) findViewById(R.id.ChooseDateBtn);
        DisplayDate1 = (TextView) findViewById(R.id.textView1);
        DisplayDate2 = (TextView) findViewById(R.id.textView2);

        changeDate.setOnClickListener(new View.OnClickListener() {

            @Override            public void onClick(View arg0) {

                new DatePickerDialog(MainActivity.this, d,
                        rightNow.get(Calendar.YEAR), rightNow.get(Calendar.MONTH),
                        rightNow.get(Calendar.DAY_OF_MONTH)).show();

            }
        });
    }

    DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {

        @Override        public void onDateSet(DatePicker view, int year, int monthOfYear,
                              int dayOfMonth) {


            cmonth = monthOfYear + 1;
            rmonth = rightNow.get(Calendar.MONTH) + 1;



            Calendar c = new GregorianCalendar(year, monthOfYear, dayOfMonth,
                    rightNow.get(Calendar.HOUR_OF_DAY), rightNow.get(Calendar.MINUTE),
                    rightNow.get(Calendar.SECOND));

            long diff = c.getTimeInMillis() - rightNow.getTimeInMillis();
            long diffSec = diff / 1000;
            long diffMins = diff / (60 * 1000);
            long diffHrs = diff / (60 * 60 * 1000);
            long diffDays = diff / (24 * 60 * 60 * 1000);


            DisplayDate1.setText("Choosen date is :" + dayOfMonth + "/" + cmonth + "/" + year +
                    "  Millisecond is :" + c.getTimeInMillis() + "\n" + "Current date is :" +
                    rightNow.get(Calendar.DAY_OF_MONTH) + "/" +
                    rmonth + "/" + rightNow.get(Calendar.YEAR) +
                    "  Millisecond is :" + rightNow.getTimeInMillis());
            DisplayDate2.setText("Date difference in seconds: " + diffSec +"\n"+
                    "Date difference in minutes: "+diffMins+"\n"+ "Date difference in hours: "+
                    diffHrs +"\n"+"Date difference in days: " + diffDays);



        }
    };
}
 
 

沒有留言:

張貼留言