从Joda时间输出中删除毫秒和秒

时间:2015-07-14 10:13:06

标签: android string textview jodatime

我正在尝试将剩余时间输出到特定日期(8月15日在西班牙马德里),并且使用我的代码我可以获得TextView以正确显示它。但是,它还会显示我想删除的毫秒和秒数,以及我想要转换为几天的“月份”。

你能帮我一把吗?

    DateTimeZone timeZone = DateTimeZone.forID("Europe/Madrid");
    DateTime target = new DateTime(2015, 8, 15, 0, 0, 0, timeZone);
    DateTime now = new DateTime(timeZone);
    Period period = new Period(now, target);

    PeriodFormatter formatter = PeriodFormat.getDefault();
    String output = formatter.print(period);
    TextView tv = (TextView) v.findViewById(R.id.tv);
    tv.setText(output);

2 个答案:

答案 0 :(得分:1)

纯粹的Joda解决方案如下:

   DateTimeZone timeZone = DateTimeZone.forID("Europe/Madrid");
   DateTime target = new DateTime(2015, 8, 15, 0, 0, 0, timeZone);
   DateTime now = new DateTime(timeZone);
   Period period = new Period(now, target);

   PeriodFormatter formatter = PeriodFormat.getDefault();
   String output = formatter.print(period);
   System.out.println(output); // 4 weeks, 2 days, 17 hours, 2 minutes, 10 seconds and 817 milliseconds

   period = new Period(
     now, 
     target, 
     PeriodType.dayTime().withSecondsRemoved().withMillisRemoved());
   output = formatter.print(period);
   System.out.println(output); // 30 days and 17 hours

决定性的变化是使用PeriodType的专门变体。

只要您只需要完整的英文单词(使用PeriodFormat.getDefault())Joda-Time就可以了(内置支持仅限9种语言 - 其他libs具有更好的i18n功能)。否则,标准Java根本不提供持续时间处理和格式化,因为@VV的另一个错误答案是假装。

答案 1 :(得分:0)

试试这个

    Calendar c = Calendar.getInstance();
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    String formattedDate = df.format(c.getTime());  
    try {

        df.setTimeZone(TimeZone.getDefault());
        long timeStamp  = df.parse(formattedDate).getTime();
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }