java 时间转换

来源:互联网 发布:mac os 哪个版本号 编辑:程序博客网 时间:2024/06/05 19:20

现在好多应用都有 刚刚 一个小时前,两分钟前  这段时间比较闲,比较无聊 就写了一个 。没事看着玩吧

主要的思路 就是 100 转化成 一百零零 最后的 零零 不管有几个都会去掉,1001 就是 一千零零一 中间两个零以上的包含两个 都改成零。 按照常规的写 整理非常规的。其他的类似 最大应该是到万  没有写千万的 代码里有注释 可以看看 楼主自己就测试到万


import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/** *  * 1,刚刚 2,一小时前 3,两小时前 4,一天前 5,两天前 6,三天前 *  *  *  * @author whaty *  */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 不是的请转化成这个 *  * @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-10-30 10:20:30.0"));}}


0 0
原创粉丝点击