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

效果图:

ed6d79a70c6920327a5095a262050bc6.png

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

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

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" >

android:id="@+id/tv_week"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

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" />

原文:http://blog.csdn.net/u012885461/article/details/46458225

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值