效果图:

android 计算所在周所在月的前后日期_第1张图片

使用了 一个时间相关的工具类

package com.yqy.yqy_date;import android.util.Log;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/** * 时间工具类 * @author YQY * */public class ToolDateTime {/** 日期格式:yyyy-MM-dd HH:mm:ss **/public static final String DF_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";/** 日期格式:yyyy-MM-dd HH:mm **/public static final String DF_YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";/** 日期格式:yyyy-MM-dd **/public static final String DF_YYYY_MM_DD = "yyyy-MM-dd";/** 日期格式:HH:mm:ss **/public static final String DF_HH_MM_SS = "HH:mm:ss";/** 日期格式:HH:mm **/public static final String DF_HH_MM = "HH:mm";private final static long minute = 60 * 1000;// 1分钟private final static long hour = 60 * minute;// 1小时private final static long day = 24 * hour;// 1天private final static long month = 31 * day;// 月private final static long year = 12 * month;// 年/** Log输出标识 **/private static final String TAG = ToolDateTime.class.getSimpleName();/** * 将日期格式化成友好的字符串:几分钟前、几小时前、几天前、几月前、几年前、刚刚 *  * @param date * @return */public static String formatFriendly(Date date) {if (date == null) {return null;}long diff = new Date().getTime() - date.getTime();long r = 0;if (diff > year) {r = (diff / year);return r + "年前";}if (diff > month) {r = (diff / month);return r + "个月前";}if (diff > day) {r = (diff / day);return r + "天前";}if (diff > hour) {r = (diff / hour);return r + "个小时前";}if (diff > minute) {r = (diff / minute);return r + "分钟前";}return "刚刚";}/** * 将日期以yyyy-MM-dd HH:mm:ss格式化 *  * @param dateL *            日期 * @return */public static String formatDateTime(long dateL) {SimpleDateFormat sdf = new SimpleDateFormat(DF_YYYY_MM_DD_HH_MM_SS);Date date = new Date(dateL);return sdf.format(date);}/** * 将日期以yyyy-MM-dd HH:mm:ss格式化 *  * @param dateL *            日期 * @return */public static String formatDateTime(long dateL, String formater) {SimpleDateFormat sdf = new SimpleDateFormat(formater);return sdf.format(new Date(dateL));}/** * 将日期以yyyy-MM-dd HH:mm:ss格式化 *  * @param dateL *            日期 * @return */public static String formatDateTime(Date date, String formater) {SimpleDateFormat sdf = new SimpleDateFormat(formater);return sdf.format(date);}/** * 将日期字符串转成日期 *  * @param strDate *            字符串日期 * @return java.util.date日期类型 */public static Date parseDate(String strDate) {DateFormat dateFormat = new SimpleDateFormat(DF_YYYY_MM_DD_HH_MM_SS);Date returnDate = null;try {returnDate = dateFormat.parse(strDate);} catch (ParseException e) {Log.v(TAG, "parseDate failed !");}return returnDate;}/** * 获取系统当前日期 *  * @return */public static Date gainCurrentDate() {return new Date();}/** * 验证日期是否比当前日期早 *  * @param target1 *            比较时间1 * @param target2 *            比较时间2 * @return true 则代表target1比target2晚或等于target2,否则比target2早 */public static boolean compareDate(Date target1, Date target2) {boolean flag = false;try {String target1DateTime = ToolDateTime.formatDateTime(target1,DF_YYYY_MM_DD_HH_MM_SS);String target2DateTime = ToolDateTime.formatDateTime(target2,DF_YYYY_MM_DD_HH_MM_SS);if (target1DateTime.compareTo(target2DateTime) <= 0) {flag = true;}} catch (Exception e1) {System.out.println("比较失败,原因:" + e1.getMessage());}return flag;}/** * 对日期进行增加操作 *  * @param target *            需要进行运算的日期 * @param hour *            小时 * @return */public static Date addDateTime(Date target, double hour) {if (null == target || hour < 0) {return target;}return new Date(target.getTime() + (long) (hour * 60 * 60 * 1000));}/** * 对日期进行相减操作 *  * @param target *            需要进行运算的日期 * @param hour *            小时 * @return */public static Date subDateTime(Date target, double hour) {if (null == target || hour < 0) {return target;}return new Date(target.getTime() - (long) (hour * 60 * 60 * 1000));}}

MainActivity

package com.yqy.yqy_date;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity {private TextView tv_week, tv_month;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv_week = (TextView) findViewById(R.id.tv_week);tv_month = (TextView) findViewById(R.id.tv_month);Date mDate = new Date();Date sDate = null;Date eDate = null;String sstr = "";String estr = "";sDate = ToolDateTime.subDateTime(mDate, (mDate.getDay() - 1) * 24);for (int i = 0; i < 15; i++) {eDate = ToolDateTime.addDateTime(sDate, 6 * 24);sstr = ToolDateTime.formatDateTime(sDate,ToolDateTime.DF_YYYY_MM_DD);estr = ToolDateTime.formatDateTime(eDate,ToolDateTime.DF_YYYY_MM_DD);tv_week.append(sstr + "~" + estr + "\n");sDate = ToolDateTime.addDateTime(eDate, 24);}SimpleDateFormat format = new SimpleDateFormat(ToolDateTime.DF_YYYY_MM_DD);// 获取当前月第一天:String first = "";String last = "";for (int i = 0; i < 10; i++) {Calendar c = Calendar.getInstance();Calendar ca = Calendar.getInstance();c.add(Calendar.MONTH, i);c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天first = format.format(c.getTime());// 获取当前月最后一天ca.add(Calendar.MONTH, i);ca.set(Calendar.DAY_OF_MONTH,ca.getActualMaximum(Calendar.DAY_OF_MONTH));last = format.format(ca.getTime());tv_month.append(first+"~"+last+"\n");}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    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=".MainActivity" >    <TextView        android:id="@+id/tv_week"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <TextView        android:id="@+id/tv_month"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_below="@+id/tv_week"        android:layout_marginTop="28dp" /></RelativeLayout>



更多相关文章

  1. android把字符串内容保存到指定路径
  2. android EditText插入字符串到光标所在位置
  3. FormatDateTime Java ,Android 常用的日期格式工具类
  4. Android:读取本地相册与相机获取图片上传到服务器(用字符串的形式
  5. 一个日期选择对话框
  6. 字符串与字典之间的相互转换-Python
  7. android 中EditView输入电话号码(3+4+4格式)
  8. Android录制声音(二)录音输输出格式
  9. android ip地址,手机号码,邮箱格式验证

随机推荐

  1. Android(安卓)UI 之WaterFall瀑布流效果
  2. Android(安卓)RePlugin 使用及源码分析(1)
  3. 2.2 窗口屏幕参数及UI样式---Display 和S
  4. Android(安卓)OpenGL相机视角
  5. Android(安卓)Studio实现简单的购物商城
  6. 为什么说枚举更占内存,枚举原理是什么?
  7. u3d android 优化
  8. Android使用SVG的一点小坑
  9. android 空调遥控器——简单发送内容
  10. Android系统惊现AKB48封面木马 日本警方