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

/**

* 格林尼治时间转换为时间戳

*/

public static long iso8601FormateTimeToLong(String time){

String formateTime = iso8601ToCustomerDate(time,"yyyy年M月d日 HH:mm:ss");

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日 HH:mm:ss");

Date date = null;

try {

date = sdf.parse(formateTime);

} catch (ParseException e) {

MXLog.e(MXLog.APP_WARN, e);

}

return date.getTime();

}

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

/**

* 时间戳转成本机时区的格林尼治时间

* @param date

* @return

*/

public static String dateLongToiso8601(long date) {

DateTime dateTime = new DateTime(date);

return dateTime.toString("yyyy-MM-dd'T'HH:mm:ssZ");

}

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

/**

*  时间

*  1)0-1min      刚刚

*  2)1-60min     xx分钟前,如3分钟前

*  3)1-24h        xx小时前,如2小时前

*  4)昨天的       昨天+时+分,如,昨天 05:30

*  5)昨天之前的   月+日+时+分,如,1月3日 05:30

*  6)非本年       年+月+日+时+分,如2017年1月12日 05:30

*

* @param context

* @param time

* @return

*/

public static String formateTime3(Context context,long time){

boolean isTodayMessage = false;

Calendar todayBegin = Calendar.getInstance();

todayBegin.set(Calendar.HOUR_OF_DAY, 0);

todayBegin.set(Calendar.MINUTE, 0);

todayBegin.set(Calendar.SECOND, 0);

Calendar todayEnd = Calendar.getInstance();

todayEnd.set(Calendar.HOUR_OF_DAY, 23);

todayEnd.set(Calendar.MINUTE, 59);

todayEnd.set(Calendar.SECOND, 59);

Calendar messageTime = Calendar.getInstance();

messageTime.setTime(new Date(time));

if (messageTime.before(todayEnd) && messageTime.after(todayBegin)) {

isTodayMessage = true;

}

SimpleDateFormat formatter = null;

int year = messageTime.get(Calendar.YEAR);

Calendar currentCalendar = Calendar.getInstance();

currentCalendar.setTime(new Date(System.currentTimeMillis()));

int currentYear = currentCalendar.get(Calendar.YEAR);

if (isTodayMessage) {

long currentTime = System.currentTimeMillis();

long duration = currentTime - time;

if (duration < 60 * 1000 && duration >= 0) {

//60s以内

return "刚刚";

} else if (duration >= 60 * 1000 && duration < 60 * 60 * 1000 ) {

//大于1分钟,小于1小时

return duration /60 /1000 + "分钟前";

} else if (duration >= 3600 * 1000 && duration < 3600 * 24 * 1000) {

//大于1小时

return duration / 3600 /1000 + "小时前";

}

}else if (isYesterday(time)){

formatter = new SimpleDateFormat("HH:mm");

return "昨天" + formatter.format(messageTime.getTime());

}else if (year != currentYear){

formatter = new SimpleDateFormat("yyyy年M月d日 HH:mm");

}else {

formatter = new SimpleDateFormat("M月d日 HH:mm");

}

if (formatter == null){

return "刚刚";

}else{

return formatter.format(messageTime.getTime());

}

}

java中格林尼治时间的输出_Java中格林尼治时间和时间戳的相互转换相关推荐

  1. php 输出数组第一个元素,怎么在php中利用reset() 函数输出数组中的第一个元素

    怎么在php中利用reset() 函数输出数组中的第一个元素 发布时间:2021-01-16 09:37:11 来源:亿速云 阅读:66 作者:Leah 本篇文章给大家分享的是有关怎么在php中利用r ...

  2. java 时间加减_Java中时间加减的比较

    public class TestDate{ public static void main(String[] args){ try{ Date date=new Date(); DateFormat ...

  3. java怎样将日期本土化_Java中的日期操作

    在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...

  4. java中的this的用法_java中this的用法

    This,英语单词,发音:[英][ðɪs][美][ðɪs].常翻译为:这,这么.java中this的用法有哪些呢?本文是学习啦小编整理java中this的用法的资料,仅供参考. java中this的用 ...

  5. java判断集合为空工具_java中怎么判断集合是否为空

    java中怎么判断集合是否为空 发布时间:2020-06-25 15:43:36 来源:亿速云 阅读:103 作者:Leah 这篇文章将为大家详细讲解有关java中判断集合是否为空的方法,文章内容质量 ...

  6. java中format有什么用_Java中强大的format

    Java中允许我们对指定的对象进行某种格式化,从而得到我们想要的格式化的结果. Format 首先介绍java.text包中的 Format Foramt是一个抽象基类,其具体子类必须实现 forma ...

  7. java file文件读取文件内容_java中的File文件读写操作

    之前有好几次碰到文件操作方面的问题,大都由于时间太赶而没有好好花时间去细致的研究研究.每次都是在百度或者博客或者论坛里面參照着大牛们写的步骤照搬过来,之后再次碰到又忘记了.刚好今天比較清闲.于是就在网 ...

  8. java.lang包有哪些类_Java中Lang包的工具类有哪些

    Java中Lang包的工具类有哪些 发布时间:2020-12-08 16:15:36 来源:亿速云 阅读:76 作者:Leah 今天就跟大家聊聊有关Java中Lang包的工具类有哪些,可能很多人都不太 ...

  9. java中的方法在哪里_Java中的本机方法是什么,应在哪里使用?

    小编典典 Java中的本机方法是什么,应在哪里使用? 一旦看到一个小例子,就很清楚了: Main.java : public class Main { public native int intMet ...

  10. java中的常用日期类_Java中的常用日期类说明

    日期类常用的有三个,Date类,Calendar(日历)类和日期格式转换类(DateFormat) Date类中的大部分的方法都已经过时,一般只会用到构造方法取得系统当前的时间.public clas ...

最新文章

  1. 刚发现Source Insight发布新版本了
  2. 00018计算机应用基础2019年4月,2019年4月自考计算机应用基础考前试题和答案00018.pdf...
  3. 满足其中一个条件则可_农村分户好处多,但并非人人都可分户!满足这4个条件才可以申请...
  4. MySQL 中日志的面试题总结
  5. html5 客户端数据缓存机制,深入理解HTML5离线缓存机制
  6. 基础原理系列:服务端 TCP 连接的 TIME_WAIT 问题
  7. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)----第7节: 获取异线程释放的对象...
  8. VB.NET 策略模式(下机用户类型选择)
  9. 小区物业管理系统c语言,智能小区物业管理系统毕业论文.doc
  10. 视频怎么加水印?这里有你想要的答案
  11. 新版标准日本语中级_第十四课
  12. 计算机音乐公子,抖音公子在等谁是什么梗 公子在等谁背景音乐《心机》
  13. sentinel实现秒杀活动
  14. 优派 ELITE XG320Q、XG320U / UG 评测
  15. 电信物联卡稳定的apn接入点_0月租的电信纯流量卡怎么样?
  16. ubuntu18.04添加网络共享文件夹
  17. golang map 获取某个值
  18. 爬虫问题小记 --- UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position 25703: illegal
  19. unity3d:ugui 长按按钮
  20. 解决 HTML div css 强制 换行 不换行

热门文章

  1. 解决IDEA连接mysql时出现Server returns invalid timezone问题一劳永逸的方法
  2. php rrd getcreator,Cacti ERROR: opening '*.rrd': No such file or directory 解决方法
  3. java中的Environment类
  4. 企业网站建设前如何进行网站策划
  5. 除了QQ就是一塌糊涂的日子不会再有了
  6. [转bbs]师大女生VS川大女生
  7. Cesium中获取坐标点地形高程的方法
  8. 买土豆的故事(转中外管理)
  9. 用AlexNet训练MSTAR数据集
  10. 奇兔recovery卡刷教程_如何使用recovery进行双清教程