得到今天日期并得到前后几天的日期,或者输入指定格式任意日期得到前后几天的日期

这里写图片描述

上面就是运行的效果
用到的是系统提供的一个强大的日历类Calendar,你可以给日历设置一个日期,然后在通过他的方法去得到这个日期前后的日期
但是得到的日期样式是这样的:
Wed Dec 07 12:10:38 GMT+08:00 2016
这就需要我门自己去处理转换成我们想要的格式了
接下来看具体实现步骤:

把传入的String字符串转换成Date格式

 //先将String日期转换成Date类型
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = dateFormat.parse(dd);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar cal = Calendar.getInstance();
        //最重要的一步,把日期设置给日历
        cal.setTime(date);
        //n是你要增加的天数,如果要算前几天的就传负数
        cal.add(Calendar.DATE, n);
        Date time = cal.getTime();

2,处理得到想要的日期格式

处理过程为:

 //转换成string
        String s = date.toString();
        //截取一下拿到Wed Dec 07
        String substring = s.substring(0, 10);
        //通过空格来分割,
        String[] split = substring.split(" ");
        //得到Wed---周几
        String week = split[0];
        //得到月份Dec
        String month = split[1];
        //得到日子07
        String day = split[2];
        //得到年份
        String year = s.substring(s.length() - 4, s.length());
        //根据得到的星期的首字母去转换成中文
        switch (week) {
            case "Mon":
                week = "周一";
                break;
            case "Tue":
                week = "周二";
                break;
            case "Wed":
                week = "周三";
                break;
            case "Thu":
                week = "周四";
                break;
            case "Fri":
                week = "周五";
                break;
            case "Sat":
                week = "周六";
                break;
            case "Sun":
                week = "周日";
                break;
        }
        //根据得到的月的英文字母去转换成月份
        switch (month) {
            case "Jan":
                month = "1";
                break;
            case "Feb":
                month = "2";
                break;
            case "Mar":
                month = "3";
                break;
            case "Apr":
                month = "4";
                break;
            case "May":
                month = "5";
                break;
            case "Jun":
                month = "6";
                break;
            case "Jul":
                month = "7";
                break;
            case "Aug":
                month = "8";
                break;
            case "Sept":
                month = "9";
                break;
            case "Oct":
                month = "10";
                break;
            case "Nov":
                month = "11";
                break;
            case "Dec":
                month = "12";
                break;
        }

整个我封装的date工具类为:

package com.duanlian.datedisposedemo.utils;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 时间工具类
 */

public class DateUtils {
    /**
     * 传入格式为date
     *
     * @return 1111年11月11日:周1
     */
    public static String getDate(Date date) {
        //转换成string
        String s = date.toString();
        //截取一下拿到Wed Dec 07
        String substring = s.substring(0, 10);
        //通过空格来分割,
        String[] split = substring.split(" ");
        //得到Wed---周几
        String week = split[0];
        //得到月份Dec
        String month = split[1];
        //得到日子07
        String day = split[2];
        //得到年份
        String year = s.substring(s.length() - 4, s.length());
        //根据得到的星期的首字母去转换成中文
        switch (week) {
            case "Mon":
                week = "周一";
                break;
            case "Tue":
                week = "周二";
                break;
            case "Wed":
                week = "周三";
                break;
            case "Thu":
                week = "周四";
                break;
            case "Fri":
                week = "周五";
                break;
            case "Sat":
                week = "周六";
                break;
            case "Sun":
                week = "周日";
                break;
        }
        //根据得到的月的英文字母去转换成月份
        switch (month) {
            case "Jan":
                month = "1";
                break;
            case "Feb":
                month = "2";
                break;
            case "Mar":
                month = "3";
                break;
            case "Apr":
                month = "4";
                break;
            case "May":
                month = "5";
                break;
            case "Jun":
                month = "6";
                break;
            case "Jul":
                month = "7";
                break;
            case "Aug":
                month = "8";
                break;
            case "Sept":
                month = "9";
                break;
            case "Oct":
                month = "10";
                break;
            case "Nov":
                month = "11";
                break;
            case "Dec":
                month = "12";
                break;
        }
        return year + "年" + month + "月" + day + "日:" + week;
    }

    /**
     * 返回一个日期2016年11月09日:周一
     *
     * @return
     */
    public static String disposeDate(int num) {
        //系统提供的日历类
        Calendar calendar = Calendar.getInstance();
        //num是里当前日期的天数,传0代表今天,1代表明天,-1代表昨天
        calendar.add(Calendar.DAY_OF_YEAR, num);
        //拿到时间,但是格式是:Wed Dec 07 12:10:38 GMT+08:00 2016
        Date date = calendar.getTime();
        return getDate(date);
    }

    /**
     * 传入一个2016-3-30
     * n:在日期上增加天数,返回2016年3月30日:周六
     *
     * @param n 要增加的天数
     * @return 增加之后的天数
     */
    public static String disposeDate(String dd, int n) {
        //先将String日期转换成Date类型
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = dateFormat.parse(dd);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar cal = Calendar.getInstance();
        //最重要的一步,把日期设置给日历
        cal.setTime(date);
        //n是你要增加的天数,如果要算前几天的就传负数
        cal.add(Calendar.DATE, n);
        Date time = cal.getTime();
        return getDate(time);

    }

}

demo的xml:

<?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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.duanlian.datedisposedemo.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="输入的格式不正确会崩溃"
        android:textSize="30dp"/>

    <EditText
        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginTop="20dp"
        android:digits="0123456789-"
        android:hint="输入正确格式的日期:2016-1-2"
        android:paddingLeft="10dp"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">

        <Button
            android:id="@+id/today"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="click"
            android:text="今天"
            />

        <Button
            android:id="@+id/date"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="click"
            android:text="确定"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一天:"/>

        <TextView
            android:id="@+id/one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text=""/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第二天:"/>

        <TextView
            android:id="@+id/two"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text=""/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="第三天:"/>

        <TextView
            android:id="@+id/three"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text=""/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第四天:"/>

        <TextView
            android:id="@+id/four"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text=""/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第五天:"/>

        <TextView
            android:id="@+id/five"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text=""/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第六天:"/>

        <TextView
            android:id="@+id/six"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text=""/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第七天:"/>

        <TextView
            android:id="@+id/seven"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text=""/>
    </LinearLayout>
</LinearLayout>

Activity中的具体操作,代码很简单一看就懂了:

package com.duanlian.datedisposedemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import static com.duanlian.datedisposedemo.utils.DateUtils.disposeDate;

public class MainActivity extends AppCompatActivity {
    private TextView oneDay, twoDay, ThreeDay, fourDay, fiveDay, sixDay, sevenDay;
    private EditText mEditText;

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

    private void initView() {
        oneDay = (TextView) findViewById(R.id.one);
        twoDay = (TextView) findViewById(R.id.two);
        ThreeDay = (TextView) findViewById(R.id.three);
        fourDay = (TextView) findViewById(R.id.four);
        fiveDay = (TextView) findViewById(R.id.five);
        sixDay = (TextView) findViewById(R.id.six);
        sevenDay = (TextView) findViewById(R.id.seven);
        mEditText = (EditText) findViewById(R.id.et);

    }

    String day1, day2, day3, day4, day5, day6, day7;

    public void click(View view) {

        switch (view.getId()) {
            case R.id.today:
                //分别得到这几天的日期
                day1 = disposeDate(-3);
                day2 = disposeDate(-2);
                day3 = disposeDate(-1);
                day4 = disposeDate(0);
                day5 = disposeDate(1);
                day6 = disposeDate(2);
                day7 = disposeDate(3);
                break;
            case R.id.date:
                //得到用户的输入
                String input = mEditText.getText().toString().trim();
                if (input.isEmpty() || input.length() < 8 || input.length() > 10) {
                    Toast.makeText(this, "格式不正确", Toast.LENGTH_SHORT).show();
                } else {
                day1 = disposeDate(input, -3);
                day1 = disposeDate(input,-3);
                day2 = disposeDate(input,-2);
                day3 = disposeDate(input,-1);
                day4 = disposeDate(input,0);
                day5 = disposeDate(input,1);
                day6 = disposeDate(input,2);
                day7 = disposeDate(input,3);
                }
                break;

        }
        //放入数组
        String[] date = {day1, day2, day3, day4, day5, day6, day7};
        setTextDate(date);

    }

    /**
     * 用来给textView赋值
     *
     * @param date
     */
    private void setTextDate(String[] date) {
        oneDay.setText(date[0]);
        twoDay.setText(date[1]);
        ThreeDay.setText(date[2]);
        if (date[3].equals(disposeDate(0))) {
            fourDay.setText(date[3] + "----->今天");
        } else {
            fourDay.setText(date[3] + "----->这是你输入的日期");
        }
        fiveDay.setText(date[4]);
        sixDay.setText(date[5]);
        sevenDay.setText(date[6]);
    }
}

demo下载地址:
http://download.csdn.net/detail/dl10210950/9706236

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值