我正在从week creating创建一个日期,并且只是一周中的某一天。我已经用SimpleDateFormat成功地做到了这一点,但我想把它保存为jodatime,我已经尝试了很多方法,但都没有真正起作用。
到目前为止,这是我的代码。
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.WEEK_OF_YEAR, week_of_year);
cal.set(Calendar.DAY_OF_WEEK, day_of_week);
sdf.format(cal.getTime());
DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
DateTime jodatime = dtf.parseDateTime(sdf.toString());我想得到一个我的日历kan根据日期和必要的时间对对象进行排序的jodatime Sç。
当我运行代码并想要显示jodatime时,我得到了这个错误:
java.lang.IllegalArgumentException: Invalid format: "java.text.SimpleDateFormat@b93b42a0"
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:945)
at com.example.casper.autimeplan.Fragments.ScheduleFragment$MyJavaScriptInterface.getBasicInfo(ScheduleFragment.java:282)
at com.example.casper.autimeplan.Fragments.ScheduleFragment$MyJavaScriptInterface.access$400(ScheduleFragment.java:186)
at com.example.casper.autimeplan.Fragments.ScheduleFragment$MyJavaScriptInterface$1.run(ScheduleFragment.java:203)发布于 2017-12-03 13:54:30
tl;dr
LocalDate.now().with( WeekFields.ISO.weekOfWeekBasedYear(), weekOfYear )
.with( WeekFields.ISO.dayOfWeek(), dayOfWeek )java.time
不要使用麻烦的旧date-time类。此外,现在maintenance mode中的Joda-Time项目建议迁移到java.time类。对于Android,请参阅下面最后几个项目中提到的ThreeTenABP项目。
您还没有定义周数是什么意思。有很多方法可以定义一年中的一周。我假设你指的是第一周的标准ISO 8601定义,第一周是日历的第一个星期四,星期一是每周的第一天。
使用WeekFields类,特别是WeekFields.ISO对象。
long weekOfYear = 27 ; // 1-52 or 1-53 for ISO 8601 week-based years.
long dayOfWeek = 2 ; // 1-7 for Monday-Sunday, per ISO 8601 standard.
LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) ) ;
LocalDate adjusted = today.with( WeekFields.ISO.weekOfWeekBasedYear(), weekOfYear )
.with( WeekFields.ISO.dayOfWeek(), dayOfWeek ) ;转储到控制台。
System.out.println( "2017-W27-02: " + adjusted ) ; 2017-W27-02: 2017-07-04
请参阅此code run live at IdeOne.com。
顺便说一句,…虽然没有向后移植到较旧的安卓系统,但其他Java平台可以使用库中漂亮的YearWeek类来完成这类工作。
关于java.time
java.time框架内置于Java8和更高版本中。这些类取代了麻烦的旧legacy日期时间类,如java.util.Date、Calendar和SimpleDateFormat。
现在在maintenance mode中的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参阅Oracle Tutorial。和搜索堆栈溢出,以获得许多示例和解释。规范为JSR 310。
从哪里获取java.time类?
中的
适用于安卓specifically.
的
发布于 2017-12-03 01:21:41
你只是在传递object的toString,这是不会起作用的。试试这样的东西
private static String parseDateTime(String input){
String pattern = "MM/dd/yyyy HH:mm:ss";
DateTime dateTime = DateTime.parse(input, DateTimeFormat.forPattern(pattern));
return dateTime.toString("MM/dd/yyyy HH:mm:ss");
}阅读更多here
https://stackoverflow.com/questions/47610389
复制相似问题