从 Joda 时间输出中删除毫秒和秒
Remove milliseconds and seconds from Joda time output
我正在尝试输出到某个日期(8 月 15 日在西班牙马德里)的剩余时间,并且使用我的代码我可以获得一个 TextView 来正确显示它。但是,它还显示我想删除的毫秒和秒,以及我想转换为天数的 "months"。
你能帮我一下吗?
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);
试试这个
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();
}
纯 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 种语言 - 其他库具有更好的国际化功能)。否则,标准 Java 根本不提供持续时间处理和格式化,因为 @VV 假装的另一个错误答案。
我正在尝试输出到某个日期(8 月 15 日在西班牙马德里)的剩余时间,并且使用我的代码我可以获得一个 TextView 来正确显示它。但是,它还显示我想删除的毫秒和秒,以及我想转换为天数的 "months"。
你能帮我一下吗?
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);
试试这个
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();
}
纯 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 种语言 - 其他库具有更好的国际化功能)。否则,标准 Java 根本不提供持续时间处理和格式化,因为 @VV 假装的另一个错误答案。