Java中格林尼治时间和时间戳的相互转换

亦凉 2023-06-07 14:27 44阅读 0赞

首先,将格林尼治时间转换为时间戳:

  1. /**
  2. * 格林尼治时间转换为时间戳
  3. */
  4. public static long iso8601FormateTimeToLong(String time){
  5. String formateTime = iso8601ToCustomerDate(time,"yyyy年M月d日 HH:mm:ss");
  6. SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日 HH:mm:ss");
  7. Date date = null;
  8. try {
  9. date = sdf.parse(formateTime);
  10. } catch (ParseException e) {
  11. MXLog.e(MXLog.APP_WARN, e);
  12. }
  13. return date.getTime();
  14. }

然后是时间戳转为格林尼治时间:

  1. /**
  2. * 时间戳转成本机时区的格林尼治时间
  3. * @param date
  4. * @return
  5. */
  6. public static String dateLongToiso8601(long date) {
  7. DateTime dateTime = new DateTime(date);
  8. return dateTime.toString("yyyy-MM-dd'T'HH:mm:ssZ");
  9. }

根据时间戳判断距离当前时间的时间,和微信朋友圈中的时间类似,其实原理很简单,通过传入的时间和当前时间作比较即可:

  1. /**
  2. * 时间
  3. * 1)0-1min 刚刚
  4. * 2)1-60min xx分钟前,如3分钟前
  5. * 3)1-24h xx小时前,如2小时前
  6. * 4)昨天的 昨天+时+分,如,昨天 05:30
  7. * 5)昨天之前的 月+日+时+分,如,1月3日 05:30
  8. * 6)非本年 年+月+日+时+分,如2017年1月12日 05:30
  9. *
  10. * @param context
  11. * @param time
  12. * @return
  13. */
  14. public static String formateTime3(Context context,long time){
  15. boolean isTodayMessage = false;
  16. Calendar todayBegin = Calendar.getInstance();
  17. todayBegin.set(Calendar.HOUR_OF_DAY, 0);
  18. todayBegin.set(Calendar.MINUTE, 0);
  19. todayBegin.set(Calendar.SECOND, 0);
  20. Calendar todayEnd = Calendar.getInstance();
  21. todayEnd.set(Calendar.HOUR_OF_DAY, 23);
  22. todayEnd.set(Calendar.MINUTE, 59);
  23. todayEnd.set(Calendar.SECOND, 59);
  24. Calendar messageTime = Calendar.getInstance();
  25. messageTime.setTime(new Date(time));
  26. if (messageTime.before(todayEnd) && messageTime.after(todayBegin)) {
  27. isTodayMessage = true;
  28. }
  29. SimpleDateFormat formatter = null;
  30. int year = messageTime.get(Calendar.YEAR);
  31. Calendar currentCalendar = Calendar.getInstance();
  32. currentCalendar.setTime(new Date(System.currentTimeMillis()));
  33. int currentYear = currentCalendar.get(Calendar.YEAR);
  34. if (isTodayMessage) {
  35. long currentTime = System.currentTimeMillis();
  36. long duration = currentTime - time;
  37. if (duration < 60 * 1000 && duration >= 0) {
  38. //60s以内
  39. return "刚刚";
  40. } else if (duration >= 60 * 1000 && duration < 60 * 60 * 1000 ) {
  41. //大于1分钟,小于1小时
  42. return duration /60 /1000 + "分钟前";
  43. } else if (duration >= 3600 * 1000 && duration < 3600 * 24 * 1000) {
  44. //大于1小时
  45. return duration / 3600 /1000 + "小时前";
  46. }
  47. }else if (isYesterday(time)){
  48. formatter = new SimpleDateFormat("HH:mm");
  49. return "昨天" + formatter.format(messageTime.getTime());
  50. }else if (year != currentYear){
  51. formatter = new SimpleDateFormat("yyyy年M月d日 HH:mm");
  52. }else {
  53. formatter = new SimpleDateFormat("M月d日 HH:mm");
  54. }
  55. if (formatter == null){
  56. return "刚刚";
  57. }else{
  58. return formatter.format(messageTime.getTime());
  59. }
  60. }

发表评论

表情:
评论列表 (有 0 条评论,44人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python时间时间相互转换

    在用Python处理数据时,可能有时候会需要将时间转换成时间戳,或者说将时间戳转换成时间,这里分享一下时间戳与时间的相互转换的方法。在Python里面处理时间相关问题,基本上用