Is there something wrong with SimpleDateFormat year and timezone formating
在这个烦人的问题上,我已无计可施了。基本上很长一段时间都无法解决这个问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | java.util.Calendar calendar_now = java.util.Calendar.getInstance(); java.util.Calendar calendar_entry = java.util.Calendar.getInstance(); java.util.Date dt = new Date(); java.text.SimpleDateFormat formatter; try{ // if(this.Time.length() == 0) {this.Time ="00:00";} //this.Time ="00:00"; // System.out.println("*" + this.Time +"*"); if((this.Time.substring(this.Time.length() - 2) =="am")||(this.Time.substring(this.Time.length() - 2) =="pm")) { formatter = new SimpleDateFormat("yyyy E MMM d H:mmaa z",Locale.US); dt = (Date)formatter.parse(calendar_now.get(java.util.Calendar.YEAR) +"" + this.Date +"" + this.Time +" EST"); //calendar_entry.setTimeZone(java.util.TimeZone.getTimeZone("America/New_York")); } calendar_entry.setTime(dt); if (calendar_entry.get(java.util.Calendar.MONTH) < calendar_now.get(java.util.Calendar.MONTH)){ calendar_entry.set(java.util.Calendar.YEAR,calendar_now.get(java.util.Calendar.YEAR) + 1); } else{ calendar_entry.set(java.util.Calendar.YEAR,calendar_now.get(java.util.Calendar.YEAR)); } // calendar_entry.setTimeZone(java.util.TimeZone.getTimeZone("GMT")); System.out.println(calendar_now.get(java.util.Calendar.YEAR) +"" + this.Date +"" + this.Time +" EST"); System.out.println(dt.toString()); System.out.println(calendar_entry); |
这将产生:
1 2 3 4 5 6 7 | 2010 Fri Oct 1 10:00am EST Thu Oct 01 10:00:00 SGT 1970 java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.uti l.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],fi rstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2010,MONTH=9,WEEK_OF_YEAR=40,WEEK_OF_MONTH=1,DAY_ OF_MONTH=1,DAY_OF_YEAR=274,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=2,HOUR_OF_DAY=2,MINUTE= 30,SECOND=0,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0] |
号
问题是…为什么?
在代码中,似乎从未执行过以下代码行(您希望格式化这些代码)。
1 2 |
。
正如Balusc正确指出的,这是由于字符串comaprison的条件语句无效。也就是说,您使用的是"=",而不是".equals"方法。您的问题将通过使用以下方法纠正与Balusc建议的相同之处来解决:
而不是:
1 |
我不知道你有什么,你想以什么结束,但我看到代码中至少有一个重大错误。在这条线上
1 |
你是参照比较
1 |
号
不过,我建议使用
尽管如此,毫无疑问,对于您想要实现的任何目标,都有一种更优雅的方式,但是由于功能需求不明确,所以不可能给出一个这样的启动示例。