android 计算所在周所在月的前后日期

效果图:

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

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;

	@Override
	protected 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");
		}

	}

	@Override
	public 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>
时间: 2024-10-11 10:52:13

android 计算所在周所在月的前后日期的相关文章

Java 根据指定日期计算所在周的周一和周日

public static void main(String[] args) throws ParseException {                     SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式            Calendar cal = Calendar.getInstance();            Date time=sdf.parse("2015-9-4 

java 分别获取当前时间的年月日以及当前时间所在周的周一周末日期

以前也经常用date去截取,但是病史所有场景都适合,或者说效率满足不了,或者说拼接格外麻烦.能用java本省的的方法去实现其实更爽.因为中西方的文化的差异有时候在简单的方法上我们不得不去加一些其他的去计算,谁让java是西方的语言,我也想用国产的开发语言,但不知道这辈子能不能看到了.上代码: SimpleDateFormat simdf = new SimpleDateFormat("MM月dd日"); Calendar cal = Calendar.getInstance(); Sy

js日期计算及快速获取周、月、季度起止日,获取指定日期周数以及星期几的小例子

JS获取日期时遇到如下需求,根据某年某周获取一周的日期.如开始日期规定为星期四到下一周的星期五为一周. 格式化日期: function getNowFormatDate(theDate) { var day = theDate; var Year = 0; var Month = 0; var Day = 0; var CurrentDate = ""; // 初始化时间 Year= day.getFullYear();// ie火狐下都可以 Month= day.getMonth()

Android工作笔记之——7月第2周

一.Android TextView内容过长加省略号 android:ellipsize="end"   省略号在结尾 android:singleline="true" android:ellipsize="marquee"  跑马灯 :: 跑马灯这个属性似乎直接这样还不行,TextView只有在获取焦点后才会滚动显示隐藏文字,因此需要在包中新建一个类,继承TextView.重写isFocused方法,这个方法默认行为是,如果TextView获

获取某一个日期所在周的第一天

由于统计需要,先要获取指定日期来获取该日期所在周的第一天,从而算出所在周是哪一天至哪一天.先看下面代码,是获取当天的日期. DateTime.Today 如果不是当天,而是指定日期,需要把它转换为日期. DateTime dt = Convert.ToDateTime("2013-08-02"); 如果,你把指定的日期,是一个非规则的日期格式的字符串,那得使用DateTime.ParseExact来转换http://www.cnblogs.com/insus/p/3231007.htm

通过当前时间获取当前所在周的7天的时间

<!doctype html><html><head><meta charset="utf-8"><title>获取当前时间所在周的日期</title><script>//优化整合以后的代码function displayDate02(){  var date = new Date();  var year = date.getFullYear();  var mouths = date.getMont

C# 时间计算 今天、昨天、前天、明天 一个月的开始日期与结束日期

C# 时间计算 今天.昨天.前天.明天 class Program    {        static void Main(string[] args)        {            DateTime dt1=GetTodayZeroTime(DateTime.Now);            Console.WriteLine("今天零点:{0}",dt1.ToString() );            DateTime dt2 = GetYestodayZeroTim

获取指定日期之间的各个周和月

日志格式化类 Date.class.php <?php class Datefmt{     function __construct() {}     /**      * 根据指定日期获取所在周的起始时间和结束时间      */     public function get_weekinfo_by_date($date) {         $idx = strftime("%u", strtotime($date));         $mon_idx = $idx -

(转).net开发者对android开发一周的学习体会

春节期间,相对比较闲,上班时也没什么事情做.利用这一周的时间,简单的学习了一下移动方面的开发.主要是针对android,其实我对IOS更感兴趣 (因为我用iphone),苦于暂时没有苹果电脑,只能把它放到以后学习.我的工作中暂时没有用到移动方面的开发,自己以前也一直做.net方面的应用.在这里以一个.net开发人员的思维记一下对android开发学习中的一点自己的心得和体会.初学者的胡言乱语,高手请一笑而过. 开发环境搭建 先下载JDK安装.对于android的SDK和eclipse,可以直接到