Java 将SimpleDataFormat解析为JodaTime
我从weeknumber创建一个日期,并且只创建一周中的一天。我已经用SimpleDataFormat成功地完成了这项工作,但我想将其另存为jodatime,我尝试了很多方法,但都没有真正起作用 这是到目前为止我的代码Java 将SimpleDataFormat解析为JodaTime,java,android,jodatime,simpledateformat,Java,Android,Jodatime,Simpledateformat,我从weeknumber创建一个日期,并且只创建一周中的一天。我已经用SimpleDataFormat成功地完成了这项工作,但我想将其另存为jodatime,我尝试了很多方法,但都没有真正起作用 这是到目前为止我的代码 SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); Calendar cal = Calendar.getInstance(); cal.set(Calendar.WEEK_OF_YEAR, we
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());
我想得到一个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)
您只是在传递一个无效的对象字符串。 试试这样的
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");
}
阅读更多tl;博士
java.time
不要使用麻烦的旧日期时间类。此外,该项目现在正在进行中,建议迁移到类。对于Android,请参阅下面最后一个项目中提到的ThreeTenABP项目
您尚未定义周数的含义。有很多方法可以定义一年中的一周。我假设你指的是第一周的标准定义,日历的第一个星期四,星期一是每周的第一天
使用类,特别是对象
转储到控制台
System.out.println( "2017-W27-02: " + adjusted ) ;
2017-W27-02:2017-07-04
看这个
顺便说一句,虽然没有向后移植到旧的Android,但其他Java平台可以使用库中的漂亮类来完成这类工作
关于java.time
该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&
该项目现已启动,建议迁移到类
要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是
从哪里获得java.time类
,及以后
内置的。
标准JavaAPI的一部分,带有捆绑实现。
Java9添加了一些次要功能和修复。
和
大部分java.time功能都在中向后移植到Java6和Java7。
该项目特别针对Android采用了上述Three-Ten Backport。
看见
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 ) ;