我正在尝试将剩余时间输出到特定日期(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);
答案 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();
}