我在android中有一个时间选择器。当用户选择时间时,通过onTimeSet方法返回两个整数(hourOfDay和minute)。它的签名如下所示:
public void onTimeSet(TimePicker view, int hourOfDay, int minute);
我想要的是向用户显示所选时间在本地模式中。因此,在巴西或法国,时间应该是14:30,而在美国,下午2:30。目前我使用的是joda-time库而不是LocalTime,因为android不支持最后一个。如果我能得到String模式的时间问题就解决了,因为我可以调用toString(String pattern)方法。
LocalTime localTime = new LocalTime(hourOfDay, minute);
localTime.toString(pattern /* to be found */)
我和另一个Picker有同样的问题。用户选择日期,并返回年,月和日.OfMonth。在这种情况下,在巴西或法国,日期应显示为2000年1月12日在美国的1/12/2000。
我该如何解决这个问题?有什么想法吗?
提前致谢
答案 0 :(得分:2)
Joda-Time库现在处于维护模式,团队建议迁移到java.time类。
使用ThreeTenABP库的java.time框架。
LocalDate ld = LocalDate.of( 2017 , 1 , 23 );
LocalTime lt = LocalTime.of( 12 , 23 ) ;
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.of( ld , lt , z );
Locale l = Locale.CANADA_FRENCH ;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.LONG ).withLocale( l );
String output = zdt.format( f );
通过调用ofLocalizedDate
或ofLocalizedTime
,使用其他FormatStyle
个对象,其他Locale
个对象,其他区域,调整以适合您的口味。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?