Android中时间、日期的计算方法

编写不易,如有转载,请声明出处:http://blog.csdn.net/zxc514257857/article/details/73466836

方法一:使用java.text.SimpleDateFormat进行计算

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private Date mDate;
    private SimpleDateFormat mSdf;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
    }

    public void initView(){
        mDate = new Date();
        mSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    }

    public void initData(){
        String today = mSdf.format(mDate);
        String yesterday = mSdf.format(new Date(mDate.getTime() - 1 * 24 * 60 * 60 * 1000));
        String tomorrow = mSdf.format(new Date(mDate.getTime() + 1 * 24 * 60 * 60 * 1000));
        Log.i(TAG , "today:" + today);
        Log.i(TAG , "yesterday:" + yesterday);
        Log.i(TAG , "tomorrow:" + tomorrow);
    }
}

方法二:使用java.util.Calendar进行计算

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private Calendar mCalendar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();
    }

    public void initData(){
        getNow();
        getTomorrow();
        getYesterday();
    }

    private void getTomorrow() {
	    // 从日历类中获取默认时间(即当前时间)
        mCalendar = Calendar.getInstance();
        int year = mCalendar.get(Calendar.YEAR);
        // 按照外国习惯,月份是从0 开始的
        int month = mCalendar.get(Calendar.MONTH) + 1;
        // 将日期加一,即为明天的时间
        mCalendar.set(Calendar.DAY_OF_MONTH , mCalendar.get(Calendar.DAY_OF_MONTH) + 1);
        int day = mCalendar.get(Calendar.DAY_OF_MONTH);
        int hour = mCalendar.get(Calendar.HOUR_OF_DAY);
        int minute = mCalendar.get(Calendar.MINUTE);
        int second = mCalendar.get(Calendar.SECOND);

        Log.i( TAG , "tomorrow:" + year + "-" + addZero(month + "") + "-" + addZero(day + "") + " " + addZero(hour + "") + ":" + addZero(minute + "") + ":" + addZero(second + ""));
    }

    private void getYesterday() {
	    // 从日历类中获取默认时间(即当前时间)
        mCalendar = Calendar.getInstance();
        int year = mCalendar.get(Calendar.YEAR);
        // 按照外国习惯,月份是从0 开始的
        int month = mCalendar.get(Calendar.MONTH) + 1;
        // 将日期减一,即为昨天的时间
        mCalendar.set(Calendar.DAY_OF_MONTH , mCalendar.get(Calendar.DAY_OF_MONTH) - 1);
        int day = mCalendar.get(Calendar.DAY_OF_MONTH);
        int hour = mCalendar.get(Calendar.HOUR_OF_DAY);
        int minute = mCalendar.get(Calendar.MINUTE);
        int second = mCalendar.get(Calendar.SECOND);

        Log.i( TAG , "yesterday:" + year + "-" + addZero(month + "") + "-" + addZero(day + "") + " " + addZero(hour + "") + ":" + addZero(minute + "") + ":" + addZero(second + ""));
    }

    public void getNow(){
	    // 从日历类中获取默认时间(即当前时间)
        mCalendar = Calendar.getInstance();
        int year = mCalendar.get(Calendar.YEAR);
        // 按照外国习惯,月份是从0 开始的
        int month = mCalendar.get(Calendar.MONTH) + 1;
        int day = mCalendar.get(Calendar.DAY_OF_MONTH);
        int hour = mCalendar.get(Calendar.HOUR_OF_DAY);
        int minute = mCalendar.get(Calendar.MINUTE);
        int second = mCalendar.get(Calendar.SECOND);

        Log.i( TAG , "today:" + year + "-" + addZero(month + "") + "-" + addZero(day + "") + " " + addZero(hour + "") + ":" + addZero(minute + "") + ":" + addZero(second + ""));
    }

    public String addZero(String num){
        int length = num.length();
        if(length == 1){
            return "0" + num;
        }
        return num;
    }
}

方法三:使用java.util.GregorianCalendar进行计算

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private SimpleDateFormat mSdf;
    private GregorianCalendar mGc;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();
    }

    public void initData(){
        mSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        mGc = new GregorianCalendar();
        getNow();
        getTomorrow();
        getYesterday();
    }

    public void getNow(){
        mGc.setTime(new Date());
        String today = mSdf.format(mGc.getTime());
        Log.i(TAG , "today:" + today);
    }

    public void getYesterday(){
        mGc.setTime(new Date());
        mGc.add(Calendar.DAY_OF_MONTH , -1);
        String yesterday = mSdf.format(mGc.getTime());
        Log.i(TAG , "yesterday:" + yesterday);
    }

    public void getTomorrow(){
        mGc.setTime(new Date());
        mGc.add(Calendar.DAY_OF_MONTH , +1);
        String tomorrow = mSdf.format(mGc.getTime());
        Log.i(TAG , "tomorrow:" + tomorrow);
    }
}

  导包的时候不要导成了android.icu包,要导java包,否则API在minSdkVersion = 24以下无法使用

参考:http://blog.csdn.net/liwenfeng1022/article/details/6534176/


----------因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBackTo

感谢各位金主大大(* _ *)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值