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

来源:互联网 发布:如何选购冰箱 知乎 编辑:程序博客网 时间:2024/06/05 03:28

这里写图片描述

上面就是运行的效果
用到的是系统提供的一个强大的日历类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

0 0
原创粉丝点击