java date 前一小时_java时间转化类,一小时前,刚刚一个月前

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

/**

*

* 1,刚刚 2,一小时前 3,两小时前 4,一天前 5,两天前 6,三天前

*

*

*

* @author liqingju

*

*/

public class TimeUtile {

private static final long ONEDATE = 86400000; // 一天的时间差

private static final long ONEHOUR = 3600000; // 一小时的时间差

private static final long ONEMINUTE = 60000; // 一分钟的时间差

/**

*

*

* time类型 是 yyyy-MM-dd HH:mm:ss.s 不是的请转化成这个

*

* time 未与当前时间相比的时间 time 就是未来的时间

* @param time

* @return

*/

public static String putDate(String time) {

String dateStr = null;

try {

//SimpleDateFormat dd = new SimpleDateFormat("dd");

SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.s");

Date otheTime = yyyyMMdd.parse(time);

Date nowTime = new Date();

//Date date10 = yyyyMMdd.parse("2015-10-10 10:30:30.0");

//Date date11 = yyyyMMdd.parse("2015-10-10 23:40:30.0");

Long time10 = nowTime.getTime();

Long time11 = otheTime.getTime();

//System.out.println("time=== " + time10 + " time11 " + time11 + " time10差值" + (time11 - time10));

//System.out.println("用了多久=== " + (time11 - time10) / ONEDATE);

//System.out.println("====" + dd.format(new Date(time11 - time10)));

// dateStr = yyyyMMdd.format(new Date(time10));

long timeDiff = time11 - time10;

if (timeDiff >= ONEDATE) {

String someDate = someDate(timeDiff);

return someDate == null ? time : someDate;

}

if (timeDiff >= ONEHOUR) {

return someHour(timeDiff);

}

if (timeDiff >= ONEMINUTE) {

return someMinute(timeDiff);

}

} catch (ParseException e) {

e.printStackTrace();

}

return dateStr;

}

private static String someMinute(long timeDiff) {

int dateNum = (int) (timeDiff / ONEMINUTE);

System.out.println("dateNum minute== " + dateNum);

String dateStr;

if (dateNum < 10) {

dateStr = "刚刚";

} else if (dateNum < 30) {

dateStr = "半小时前";

} else {

dateStr = "一个小时以内";

}

return dateStr;

}

/**

*

* 判断相差小时

*

* @param timeDiff

* @return

*/

private static String someHour(long timeDiff) {

int dateNum = (int) (timeDiff / ONEHOUR);

System.out.println("dateNum someHour== " + dateNum);

String dateStr;

if (dateNum < 12) {

dateStr = getDate(dateNum, "小时前");

} else {

dateStr = "一天以内";

}

return dateStr;

}

/**

*

* 用于判断相差月数

*

* @param timeDiff

* @return

*/

private static String someDate(long timeDiff) {

int dateNum = (int) (timeDiff / ONEDATE);

System.out.println("dateNum someDate== " + dateNum);

String dateStr;

if (dateNum <= 15) {

dateStr = getDate(dateNum, "天前内");

} else if (dateNum <= 30 && dateNum > 15) {

dateStr = "一个月内";

} else if (dateNum < 60) {

dateStr = "两个月内";

} else {

dateStr = "很久很久以前";

}

return dateStr;

}

/**

* 组装提示

*

* @param index

* @param str

* @return

*/

private static String getDate(int index, String str) {

return String.format("%s%s", enNum2CnNum(String.valueOf(index)), str);

}

/**

*

* 数字转化成中国的一二三

*

*

* @param num

* @return

*/

public static String enNum2CnNum(String num) {

String[] CnNum = new String[] { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };

//自己最大值 只需要 在这里添加就行了 其他代码不用改 例如到 亿

String[] Cn10Num = new String[] { "十", "百", "千","万" };

String CnStr = "";

try {

char[] strArray = num.toCharArray();

int length = strArray.length;

for (int i = 0; i < strArray.length; i++) {

if (length > 1 && ((char2Int(strArray[i])) != 0)) {

CnStr += (CnNum[char2Int(strArray[i])] + Cn10Num[length - 2]);

} else {

CnStr += CnNum[char2Int(strArray[i])];

}

length--;

}

// 处理多个零字段

CnStr = CnStr.replaceAll("零零*", "零");

// 处理最后一个是零

if (CnStr.lastIndexOf("零") + 1 == CnStr.length()) {

CnStr = CnStr.replaceAll("零$", "");

}

// 处理十几

if (CnStr.contains("十") && (CnStr.length() == 3 || CnStr.length() == 2)) {

CnStr = CnStr.replaceAll("^一", "");

}

} catch (Exception e) {

e.printStackTrace();

}

return CnStr;

}

/**

* 获取单个的String

*

* @param cha

* @return

*/

private static Integer char2Int(char cha) {

return Integer.valueOf(cha + "");

}

public static void main(String[] args) {

System.out.println("==== " + putDate("2015-12-30 10:20:30.0"));

//System.out.println(enNum2CnNum("10000"));

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值