Modeled on WeChat Moments a few minutes ago, a few days ago
package utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class FriendlyTime { public static void main(String[] args) throws ParseException { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:m:s"); Date date = format.parse("2016-05-09 16:02:35"); System.out.println(getFriendlytime(date)); } public static String getFriendlytime(Date d){ long delta = (new Date().getTime()-d.getTime())/1000; if(delta<=0)return d.toLocaleString(); if(delta/(60*60*24*365) > 0) return delta/(60*60*24*365) +"年前"; if(delta/(60*60*24*30) > 0) return delta/(60*60*24*30) + "month ago"; if(delta/(60*60*24*7) > 0)return delta/(60*60*24*7) +"周前"; if(delta/(60*60*24) > 0) return delta/(60*60*24) +"天前"; if(delta/(60*60) > 0)return delta/(60*60) + "hours ago"; if(delta/(60) > 0)return delta/(60) + "minutes ago"; return "just now"; } }
Solution for obsolete date.toLocaleString() in java: prompt description
SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateTimeInstance();
System.out.println("Date time: " + sdf.format(date));