Android 日期計算


       很多初學者都在為如何實現日期計算這個算法而苦惱。現在網上也可以找到很多相關的java算法,可是如何在Android中實現這個功能呢?  其實很簡單。

我們先來看一下實現怎樣的一個效果!

我們需要輸入開始日期和結束日期來進行計算,最后進過算法實現輸出天數。

如圖:

1EA38E1EACC55C6A08D57CFC1F72A5C7

        首先,我們來實現一下界面布局。我們需要添加三個按鈕,即Button。還有三個文本框,即TextView。

       下面我們來看一下具體代碼實現。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout //這里我們用線性布局管理,使得按鈕和文本呈線性排列。
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.haojing.date.MainActivity"
    android:weightSum="1">
    
    //添加第一個按鈕,來獲取開始時間。
    <Button
        android:layout_width="352dp"
        android:layout_height="wrap_content"
        android:text="獲取開始時間"
        android:id="@+id/btnChoose1Date"
        android:layout_weight="0.05" />
   //添加一個文本框來顯示開始時間。
    <TextView
        android:id="@+id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="開始時間:"
        android:textSize="@dimen/activity_horizontal_margin"
        android:textStyle="italic"
        android:layout_weight="0.08" />

     //添加第二個按鈕,獲取結束時間。
    <Button
        android:layout_width="352dp"
        android:layout_height="wrap_content"
        android:text="獲取結束時間"
        android:id="@+id/btnChoose2Date"
        android:layout_weight="0.05" />
    //第二個文本框,接收顯示結束時間。
    <TextView
        android:id="@+id/text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="結束時間:"
        android:textStyle="italic"
        android:textSize="@dimen/activity_horizontal_margin"
        android:layout_weight="0.08" />

     //第三個按鈕,這個Button同前兩個功能不同,他是用來實現計算間隔天數。
    <Button
        android:layout_width="352dp"
        android:layout_height="wrap_content"
        android:text="間隔天數"
        android:id="@+id/btnDaysAty"
        android:layout_weight="0.05" />
    //顯示間隔天數。
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="日期間隔為:"
        android:textStyle="italic"
        android:layout_weight="0.08"
        android:textSize="@dimen/activity_horizontal_margin"
        android:id="@+id/days" />

</LinearLayout>

 

         然后讓我們來看一下主程序。主程序我們使用DatePickerDialog來獲取時間。具體代碼實現:

//我們需要用到的包,寫代碼的過程中Android Studio會自動導入。
import android.app.DatePickerDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

import com.example.haojing.date.Util.DateUtil;//計算天數程序包,寫計算天數代碼后導入即可。

import java.text.BreakIterator;
import java.util.Date;


public class MainActivity extends AppCompatActivity 
{
    public Button btnChoose1Date;
    public Button btnChoose2Date;
    Date date1;
    Date date2;
    String theDate1;
    String theDate2;
    long between;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//     將獲取開始時間的按鈕傳進來
        btnChoose1Date= (Button) findViewById(R.id.btnChoose1Date);
//     在按鈕中實現獲取時間
        btnChoose1Date.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) 
            {
                new DatePickerDialog(MainActivity.this,new DatePickerDialog.OnDateSetListener()
                {
                    @Override
                    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
                    {
                        theDate1=(String.format("%d-%d-%d",year,monthOfYear+1,dayOfMonth));
                        System.out.println(theDate1);
                        //btnChoose1Date.setText(theDate1);
                        TextView text1=(TextView)findViewById(R.id.text1);
                        text1.setText("開始時間:"+theDate1);
                        date1 = new Date(year - 1900, monthOfYear+1, dayOfMonth);//獲取時間轉換為Date對象
                    }
                },2016,4,11).show();
            }
        });

//     將獲取結束時間的按鈕傳進來
        btnChoose2Date=(Button)findViewById(R.id.btnChoose2Date);
//    在按鈕中實現獲取時間
        btnChoose2Date.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) 
            {
                new DatePickerDialog(MainActivity.this,new DatePickerDialog.OnDateSetListener()
                {
                    @Override
                    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
                    {
                        theDate2=(String.format("%d-%d-%d",year,monthOfYear+1,dayOfMonth));
                        System.out.println(theDate2);
                        TextView text2=(TextView)findViewById(R.id.text2);
                        text2.setText("結束時間:"+theDate2);
                        date2= new Date(year - 1900, monthOfYear+1, dayOfMonth); //獲取時間轉換為Date對象
                    }
                },2016,4,11).show();
            }
        });

//    將計算的天數傳遞給TextView
        findViewById(R.id.btnDaysAty).setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                between= DateUtil.getDaysBetween(date1,date2);
                TextView days=(TextView) findViewById(R.id.days);
                days.setText("日期間隔為:"+between+"天");
            }
        });
    }
}

             最后我們來看一下天數的算法具體實現。當然,天數實現不是在整個程序最后一編寫的,而是在主程序轉入按鈕時編寫的。

package com.example.haojing.date.Util;

import android.support.annotation.NonNull;

import java.util.Calendar;

/**
 * Created by haojing on 2016/4/11.
 */
public class DateUtil {
    @NonNull
    public static Long getDaysBetween(java.util.Date startDate, java.util.Date endDate) {
        Calendar fromCalendar = Calendar.getInstance();
        fromCalendar.setTime(startDate);
        fromCalendar.set(Calendar.HOUR_OF_DAY, 0);
        fromCalendar.set(Calendar.MINUTE, 0);
        fromCalendar.set(Calendar.SECOND, 0);
        fromCalendar.set(Calendar.MILLISECOND, 0);

        Calendar toCalendar = Calendar.getInstance();
        toCalendar.setTime(endDate);
        toCalendar.set(Calendar.HOUR_OF_DAY, 0);
        toCalendar.set(Calendar.MINUTE, 0);
        toCalendar.set(Calendar.SECOND, 0);
        toCalendar.set(Calendar.MILLISECOND, 0);
        //將獲取的日期轉換為天數。
        return (toCalendar.getTime().getTime() - fromCalendar.getTime().getTime()) / (1000 * 60 * 60 * 24);
    }
}

               整個Android日期計算的實現到此結束。當然,日期計算的方法還有很多,並不局限與這一種方法。另外,獲取時間的方法也不止這一種。

               本人初學者,有什么不對的地方,請大家指出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM