友好时间显示 java以及php实现
2013-10-24 17:47
721 查看
将日期显示为 刚刚、XX分钟(小时、天、月、年)、很久以前等友好显示形式
一、java代码实现
package neo.core.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.opensymphony.xwork2.XWorkException;
public class DateUtil {
/* 日志 */
private final static Log log = LogFactory.getLog(DateUtil.class);
private static final SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");
private static final SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 将传入Date值转换为想要显示的字符串
* @param value 只允许java.util.Date 或 String 类型,其他类型不处理
* @return 几秒前,几分钟前,几小时前,几天前,几个月前,几年前,很久以前(10年前)
*/
public static String convertToShowStr(Object value) {
String result = null;
if (value instanceof Date) {
result = convertDateToShowStr((Date) value);
} else if (value instanceof String) {
result = convertDateToShowStr(convertToDate((String) value));
}
return result;
}
/**
* 将传入的时间字符串转换为Date
* @param value
* @return
*/
public static Date convertToDate(String value) {
Date result = null;
try {
if (value.indexOf(":") == -1) {
result = sdfDate.parse(value);
} else {
result = sdfDateTime.parse(value);
}
} catch (ParseException e) {
log.error("Could not parse date"+e.getMessage());
throw new XWorkException("Could not parse date", e);
}
return result;
}
/**
* 转换日期到指定格式方便查看的描述说明
* @param date
* @return 几秒前,几分钟前,几小时前,几天前,几个月前,几年前,很久以前(10年前),如果出现之后的时间,则提示:未知
*/
private static String convertDateToShowStr(Date date) {
String showStr = "";
long yearSeconds = 31536000L;//365 * 24 * 60 * 60;
long monthSeconds = 2592000L;//30 * 24 * 60 * 60;
long daySeconds = 86400L;//24 * 60 * 60;
long hourSeconds = 3600L;//60 * 60;
long minuteSeconds = 60L;
long time = (new Date().getTime() - date.getTime()) / 1000;
if(time<=0){
showStr = "刚刚";
return showStr;
}
if (time / yearSeconds > 0) {
int year = (int) (time / yearSeconds);
if (year > 10)
showStr = "很久前";
else {
showStr = year + "年前";
}
} else if (time / monthSeconds > 0) {
showStr = time / monthSeconds + "个月前";
} else if (time / daySeconds > 0) {
showStr = time / daySeconds + "天前";
} else if (time / hourSeconds > 0) {
showStr = time / hourSeconds + "小时前";
} else if (time / minuteSeconds > 0) {
showStr = time / minuteSeconds + "分钟前";
} else if (time > 0) {
showStr = time + "秒前";
}
return showStr;
}
public static void main(String args[]) {
// System.out.println(DateUtil.convertToShowStr("1981-10-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2011-10-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2012-10-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-01-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-03-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-04-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-04-13 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-04-13 14:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-04-13 14:25:00"));
// System.out.println(DateUtil.convertToShowStr("2013-04-13 14:26:30"));
}
}
二、php代码实现
/**
* 友好的时间显示
*
* @param int $sTime 待显示的时间
* @param string $type 类型. normal | mohu | full | ymd | other
* @param string $alt 已失效
* @return string
*/
function friendlyDate($sTime,$type = 'normal',$alt = 'false') {
if (!$sTime)
return '';
//sTime=源时间,cTime=当前时间,dTime=时间差
$cTime = time();
$dTime = $cTime - $sTime;
$dDay = intval(date("z",$cTime)) - intval(date("z",$sTime));
//$dDay = intval($dTime/3600/24);
$dYear = intval(date("Y",$cTime)) - intval(date("Y",$sTime));
//normal:n秒前,n分钟前,n小时前,日期
if($type=='normal'){
if( $dTime < 60 ){
if($dTime < 10){
return '刚刚'; //by yangjs
}else{
return intval(floor($dTime / 10) * 10)."秒前";
}
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
//今天的数据.年份相同.日期相同.
}elseif( $dYear==0 && $dDay == 0 ){
//return intval($dTime/3600)."小时前";
return '今天'.date('H:i',$sTime);
}elseif($dYear==0){
return date("m月d日 H:i",$sTime);
}else{
return date("Y-m-d H:i",$sTime);
}
}elseif($type=='mohu'){
if( $dTime < 60 ){
return $dTime."秒前";
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
}elseif( $dTime >= 3600 && $dDay == 0 ){
return intval($dTime/3600)."小时前";
}elseif( $dDay > 0 && $dDay<=7 ){
return intval($dDay)."天前";
}elseif( $dDay > 7 && $dDay <= 30 ){
return intval($dDay/7) . '周前';
}elseif( $dDay > 30 ){
return intval($dDay/30) . '个月前';
}
//full: Y-m-d , H:i:s
}elseif($type=='full'){
return date("Y-m-d , H:i:s",$sTime);
}elseif($type=='ymd'){
return date("Y-m-d",$sTime);
}else{
if( $dTime < 60 ){
return $dTime."秒前";
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
}elseif( $dTime >= 3600 && $dDay == 0 ){
return intval($dTime/3600)."小时前";
}elseif($dYear==0){
return date("Y-m-d H:i:s",$sTime);
}else{
return date("Y-m-d H:i:s",$sTime);
}
}
}
一、java代码实现
package neo.core.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.opensymphony.xwork2.XWorkException;
public class DateUtil {
/* 日志 */
private final static Log log = LogFactory.getLog(DateUtil.class);
private static final SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");
private static final SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 将传入Date值转换为想要显示的字符串
* @param value 只允许java.util.Date 或 String 类型,其他类型不处理
* @return 几秒前,几分钟前,几小时前,几天前,几个月前,几年前,很久以前(10年前)
*/
public static String convertToShowStr(Object value) {
String result = null;
if (value instanceof Date) {
result = convertDateToShowStr((Date) value);
} else if (value instanceof String) {
result = convertDateToShowStr(convertToDate((String) value));
}
return result;
}
/**
* 将传入的时间字符串转换为Date
* @param value
* @return
*/
public static Date convertToDate(String value) {
Date result = null;
try {
if (value.indexOf(":") == -1) {
result = sdfDate.parse(value);
} else {
result = sdfDateTime.parse(value);
}
} catch (ParseException e) {
log.error("Could not parse date"+e.getMessage());
throw new XWorkException("Could not parse date", e);
}
return result;
}
/**
* 转换日期到指定格式方便查看的描述说明
* @param date
* @return 几秒前,几分钟前,几小时前,几天前,几个月前,几年前,很久以前(10年前),如果出现之后的时间,则提示:未知
*/
private static String convertDateToShowStr(Date date) {
String showStr = "";
long yearSeconds = 31536000L;//365 * 24 * 60 * 60;
long monthSeconds = 2592000L;//30 * 24 * 60 * 60;
long daySeconds = 86400L;//24 * 60 * 60;
long hourSeconds = 3600L;//60 * 60;
long minuteSeconds = 60L;
long time = (new Date().getTime() - date.getTime()) / 1000;
if(time<=0){
showStr = "刚刚";
return showStr;
}
if (time / yearSeconds > 0) {
int year = (int) (time / yearSeconds);
if (year > 10)
showStr = "很久前";
else {
showStr = year + "年前";
}
} else if (time / monthSeconds > 0) {
showStr = time / monthSeconds + "个月前";
} else if (time / daySeconds > 0) {
showStr = time / daySeconds + "天前";
} else if (time / hourSeconds > 0) {
showStr = time / hourSeconds + "小时前";
} else if (time / minuteSeconds > 0) {
showStr = time / minuteSeconds + "分钟前";
} else if (time > 0) {
showStr = time + "秒前";
}
return showStr;
}
public static void main(String args[]) {
// System.out.println(DateUtil.convertToShowStr("1981-10-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2011-10-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2012-10-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-01-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-03-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-04-12 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-04-13 12:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-04-13 14:20:00"));
// System.out.println(DateUtil.convertToShowStr("2013-04-13 14:25:00"));
// System.out.println(DateUtil.convertToShowStr("2013-04-13 14:26:30"));
}
}
二、php代码实现
/**
* 友好的时间显示
*
* @param int $sTime 待显示的时间
* @param string $type 类型. normal | mohu | full | ymd | other
* @param string $alt 已失效
* @return string
*/
function friendlyDate($sTime,$type = 'normal',$alt = 'false') {
if (!$sTime)
return '';
//sTime=源时间,cTime=当前时间,dTime=时间差
$cTime = time();
$dTime = $cTime - $sTime;
$dDay = intval(date("z",$cTime)) - intval(date("z",$sTime));
//$dDay = intval($dTime/3600/24);
$dYear = intval(date("Y",$cTime)) - intval(date("Y",$sTime));
//normal:n秒前,n分钟前,n小时前,日期
if($type=='normal'){
if( $dTime < 60 ){
if($dTime < 10){
return '刚刚'; //by yangjs
}else{
return intval(floor($dTime / 10) * 10)."秒前";
}
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
//今天的数据.年份相同.日期相同.
}elseif( $dYear==0 && $dDay == 0 ){
//return intval($dTime/3600)."小时前";
return '今天'.date('H:i',$sTime);
}elseif($dYear==0){
return date("m月d日 H:i",$sTime);
}else{
return date("Y-m-d H:i",$sTime);
}
}elseif($type=='mohu'){
if( $dTime < 60 ){
return $dTime."秒前";
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
}elseif( $dTime >= 3600 && $dDay == 0 ){
return intval($dTime/3600)."小时前";
}elseif( $dDay > 0 && $dDay<=7 ){
return intval($dDay)."天前";
}elseif( $dDay > 7 && $dDay <= 30 ){
return intval($dDay/7) . '周前';
}elseif( $dDay > 30 ){
return intval($dDay/30) . '个月前';
}
//full: Y-m-d , H:i:s
}elseif($type=='full'){
return date("Y-m-d , H:i:s",$sTime);
}elseif($type=='ymd'){
return date("Y-m-d",$sTime);
}else{
if( $dTime < 60 ){
return $dTime."秒前";
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
}elseif( $dTime >= 3600 && $dDay == 0 ){
return intval($dTime/3600)."小时前";
}elseif($dYear==0){
return date("Y-m-d H:i:s",$sTime);
}else{
return date("Y-m-d H:i:s",$sTime);
}
}
}
相关文章推荐
- PHP将DateTime对象转化为友好时间显示的实现代码
- Java获取当前时间,以及当前时间友好显示及MD5加密
- PHP开发小技巧①—实现时间日期友好显示
- PHP版实现友好的时间显示方式(例如:2小时前)
- php格式化时间戳显示友好的时间实现思路及代码
- PHP将DateTime对象转化为友好时间显示的实现代码
- php格式化时间戳显示友好的时间实现思路及代码
- php 计算程序运行时间的类,以及用它和Curl结合Host,实现不用配置Host得到该测试机的访问速度。
- iOS实现时间显示几分钟前,几小时前以及刚刚的方法示例
- atitit.http get post的原理以及框架实现java php
- (转)优雅的微博时间显示接口(Java实现)
- 使用PHP制作 简易员工管理系统之八(使用COOKIE保存用户登陆id以及显示用户登录时间)
- php根据时间显示刚刚,几分钟前,几小时前的实现代码
- PHP实现显示用户上一次登录时间的方法
- php时间戳格式化显示友好的时间函数分享
- 显示友好时间日期(PHP)
- PHP比较全的友好时间显示
- php格式化时间戳显示友好的时间
- paip.日期时间操作以及时间戳uapi php java python 总结