【问题标题】:How to convert date and time like timeline in android?如何在android中像时间轴一样转换日期和时间?
【发布时间】:2013-10-17 00:12:39
【问题描述】:

我正在android中学习格式日期和时间,我想尝试将日期和时间转换为时间线...? 示例:

String current_date = "2013-10-07 20:57:20";

String val_date1 = "2013-10-07 20:57:20";
String val_date2 = "2013-10-07 19:57:20";
String val_date3 = "2013-10-07 17:57:20";
String val_date4 = "2013-09-07 20:57:20";

以上日期和调整后的CURRENT_DATE已转换,结果如下:

String val_date1_after_formated = "just now";
String val_date2_after_formated = "1h";
String val_date3_after_formated = "3h";
String val_date4_after_formated = "1d";

如何用程序转换日期?我希望任何人都可以帮助我。对不起,如果我的英语不好...

【问题讨论】:

    标签: android date time format


    【解决方案1】:

    这里有一个应该完成这项工作的函数

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    int[] steps = {1,60,3600,3600*24};
    String[] names = {"seconds","minutes","hours","days"};
    
    //...
    
    public String formatDelay(String date){
        try {
            Date d = sdf.parse(date);
            Long stamp = d.getTime()/1000;
            Long now = System.currentTimeMillis()/1000;         
            Long dif = now - stamp;
    
            if(stamp > now) return "";
    
            for(int i=0;i<steps.length;i++){
                if(dif<steps[i]){
                    String output = Long.toString(dif/steps[i-1])+" "+names[i-1];
                    return output;
                }
            }       
    
            return Long.toString(dif/steps[3])+" "+names[3];
    
    
        } catch (Exception e){
            e.printStackTrace();
            return "";
        }
    

    【讨论】:

    • 如果您添加检查 0s (0-999 ms) if(dif == 0) return "0s";就在图章下方>现在或更改图章>现在为图章>=现在取决于您想要的内容
    【解决方案2】:

    不确定这是否是您要查找的内容,但要获取当前时间,请使用它。以毫秒为单位返回。

    System.currentTimeMillis() / 1000L;
    

    要将其格式化为时间日期时间,请使用此代码。

    long loadDate = System.currentTimeMillis() / 1000L;
    String dateString = new SimpleDateFormat("MM/dd/yyyy").format(new Date(loadDate));
    

    【讨论】:

      【解决方案3】:

      formatDuration 可能对此有好处:

      public String getDuration(long time) {
          StringBuilder sb = new StringBuilder();
          android.support.v4.util.TimeUtils.formatDuration(System.currentTimeMillis() - date, sb);
          return sb.toString();
      }
      

      现在要获取long time,您需要解析输入日期(可能使用SimpleDateFormat)。

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
      long date = sdf.parse("2013-10-07 20:57:20").getTime();
      String duration = getDuration(date);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-06
        • 2010-09-21
        • 2012-08-03
        • 1970-01-01
        相关资源
        最近更新 更多