得到今天日期并得到前后几天的日期,或者输入指定格式任意日期得到前后几天的日期
来源:互联网 发布:如何选购冰箱 知乎 编辑:程序博客网 时间: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
- 得到今天日期并得到前后几天的日期,或者输入指定格式任意日期得到前后几天的日期
- (jquery)input输入一个日期得到前后几天的日期
- JAVA得到某个日期的前几天或者后几天
- 得到当前电脑日期的前后两天
- android 阶段性日期的获取,得到几天后的日期
- js获取当前日期的前后几天
- 输入日期,得到明天的日期
- java 日期计算(几天前后)
- java日期前后几天取法
- java 日期计算(几天前后)
- java得到时间前后几天的代码
- Java获取某个日期前后几天日期
- 获取指定格式的日期字符串,包括前一天或者几天
- mysql 函数日期 两个日期相减 得到相差几天
- 得到上个月的今天的日期
- 根据今天的日期或者传入的日期得到本日所在周的开始日期和结束日期
- lua指定日期前后天数的日期
- java获取指定日期的前后日期
- java中关于集合的总结
- 安卓权限:用户的注意力、理解和行为
- 转:python的setup文件说明
- 基本类型和String的区别
- android夯实总结(设计、细节及思想)
- 得到今天日期并得到前后几天的日期,或者输入指定格式任意日期得到前后几天的日期
- LLVM(Clang)的编译过程
- 大数据处理引擎Spark与Flink对比分析!
- JAVA Runtime.addShutdownHook()方法{拿到线程句柄,在程序关闭之前调用释放资源}
- 使用JUnit测试预期异常
- 多线程和互斥量
- PC-1500的代码存入WAV文件
- Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.so.
- 导出时添加模板导出Excel