求一个手写的java日期处理类。。。要是自己写的哦。。
我想要一个存的时候用date类型存入数据库的,取出来能处理一次,显示为 9月25日 17:58:38 的形式的,如果是今天的话就是 今天/昨天 17:58:38 或者是 几个小时以前的那种。,。。。反正就就类是微博那种时间的手写的处理类。。。
我表示是自己对日期等的数据类型不精通,所以写起来有困难,。,,,希望哪位大神能把写的让我借鉴一下。
[解决办法]
用现有的Date和Calendar封装一下呗。。。
[解决办法]
这样行吗
package com.study.util;import java.text.SimpleDateFormat;import java.util.Date;public class DateUtil { public static void main(String[] args) { Date d = new Date(); long i = d.getTime() - 10000000; System.out.println(getBefore(new Date(i))); } public static String getBefore(Date date){ long old = date.getTime(); long now = (new Date()).getTime(); long re = (now - old) / (1000 * 60);//分钟 long days = re / (24 * 60); StringBuffer sb = new StringBuffer(); if(days > 1){ SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 hh:mm:ss"); sb.append(sdf.format(date)); }else if(days == 1){ SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss"); sb.append("昨天").append(sdf.format(date)); }else{ re = re % (24 * 60); long hours = re / 60; long mins = re % 60; if(hours != 0){ sb.append(hours).append("小时"); } if(mins != 0){ sb.append(mins).append("分钟以前"); } } return sb.toString(); }}
[解决办法]
import java.text.SimpleDateFormat;import java.util.Date;public class MyDate { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(new ChsDate(new Date())); System.out.println(new ChsDate(sdf.parse("2012-09-27 15:58:30"))); System.out.println(new ChsDate(sdf.parse("2012-09-27 15:50:00"))); System.out.println(new ChsDate(sdf.parse("2012-09-27 10:50:00"))); System.out.println(new ChsDate(sdf.parse("2012-08-27 10:50:00"))); }}class ChsDate { private static String NOW = "现在"; private static String HOURS_AGO = "小时前"; private static String MINUTES_AGO = "分钟前"; private static String SECONDS_AGO = "秒前"; private static long SECOND = 1000L; private static long MINUTE = 60 * 1000L; private static long HOUR = 60 * 60 * 1000L; private static long DAY = 24 * 60 * 60 * 1000L; private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); private Date date; public ChsDate(Date date) { this.date = date; } @Override public String toString() { long c = new Date().getTime(); long p = this.date.getTime(); if (c - p > DAY) { return sdf.format(date); } else if (c - p > HOUR) { return (c - p) / HOUR + HOURS_AGO; } else if (c - p > MINUTE) { return (c - p) / MINUTE + MINUTES_AGO; } else if (c - p > SECOND) { return (c - p) / SECOND + SECONDS_AGO; } return NOW; }}
[解决办法]
package zl.framework.util.tool;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import zl.framework.entity.Settled;/** * 处理日期的工具类 * @version 2.0 */public class DateUtil { private static DateUtil bean = new DateUtil(); /** * 单例模式获得bean * @return DateUtil */ public static DateUtil getBean() { return bean; } /** * @param type 0为日期部分 1为所有内容 2就是一串数字 * @return String * 获得当前日期 */ public String getNowDate(int type) { SimpleDateFormat format = null; if (type == 0) { format = Settled.FORMAT_DATE; } else if (type == 1) { format = Settled.FORMAT_DATE_TIME; } else { format = Settled.FORMAT_DATE_NO; } return format.format(new Date()); } /** * @param dateTime 日期时间(必须是标准格式,如果为空就取当前时间) * 将日期转换成中文格式 * @return String */ public String dateToChina(String dateTime) { try { if (null == dateTime || "".equals(dateTime)) { dateTime = getNowDate(1); } Date date = Settled.FORMAT_DATE_TIME.parse(dateTime); int year = Integer.parseInt(new SimpleDateFormat("yyyy").format(date)); int month = Integer.parseInt(new SimpleDateFormat("MM").format(date)); int day = Integer.parseInt(new SimpleDateFormat("dd").format(date)); return year + "年" + month + "月" + day + "日"; } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 根据格式取出日期的一部分 * @param dateTime 日期时间(必须是标准格式,如果为空就取当前时间) * @param part 你想要的格式 * @return String */ public String getDatePart(String dateTime, String part) { try { SimpleDateFormat format = Settled.FORMAT_DATE_TIME; Date time = new Date(); if (null != dateTime && !"".equals(dateTime)) { time = format.parse(dateTime); } format = new SimpleDateFormat(part); return format.format(time); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 获得以后或以前的日期 * @param date 日期时间(必须是标准格式,如果为空就取当前时间) * @param type 1为之前2为之后 * @param diff 相差多少秒 * @return String */ public String getDetachDate(String date, int type, int diff) { try { SimpleDateFormat format = Settled.FORMAT_DATE_TIME; Calendar now = Calendar.getInstance(); now.setTime(new Date()); if (null != date && !"".equals(date)) { now.setTime(format.parse(date)); } if (type == 1) { now.set(Calendar.SECOND, now.get(Calendar.SECOND) - diff); } else { now.set(Calendar.SECOND, now.get(Calendar.SECOND) + diff); } return format.format(now.getTime()); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 计算时间差(单位秒) * @param date1 前一个日期时间(必须是标准格式,不能为空) * @param date2 后一个日期时间(必须是标准格式,如果为空就取当前时间) * @return Long */ public Long getDateDiff(String date1, String date2) { try { if (null != date1 && !"".equals(date1)) { SimpleDateFormat format = Settled.FORMAT_DATE_TIME; Date begin = format.parse(date1); Date end = new Date(); if (null != date2 && !"".equals(date2)) { end = format.parse(date2); } return (end.getTime() - begin.getTime()) / 1000; } } catch (Exception e) { e.printStackTrace(); } return 0l; } /** * 根据年月获得当月天数 * @param year 年份 * @param month 月份 * @return Integer */ public Integer getDays(int year, int month) { Integer days = 31; if (month == 4 || month == 6 || month == 9 || month == 11) { days = 30; } if (month == 2) { if (year % 4 == 0) { days = 29; } else { days = 28; } } return days; } /** * 获得今天的最早或最晚日期 * @param type 1表示最早,2表示最晚 * @return Date */ public Date getTodayDate(int type) { try { String now = getNowDate(0); SimpleDateFormat format = Settled.FORMAT_DATE_TIME; if (type == 1) { return format.parse(now + " 00:00:00"); } else if (type == 2) { return format.parse(now + " 23:59:59"); } } catch (Exception e) { e.printStackTrace(); } return null; } }
[解决办法]
公司内部使用的自定义框架的一段源码,注释齐全,你都看得懂的!
[解决办法]
哥们 你打开api 看看 date的所有属性和用发 就明了了 或者用 javascript js都行 很强的date方法!!!!