这两天在做课设,关于图书管理系统的,其中在借书的记录中,时间记录的月份总是出现不正常的数值,大于12经常四十几五十几,经过对借书模块的跟踪,最后将错误定位到了时间格式化的这行代码
SimpleDateFormat f = newSimpleDateFormat("yyyy-mm-dd HH:mm:ss");
经过这行代码是要将格式化为常见的2013-07-11 09:07:20这种格式,结果经常出现2013-00-11 09:07:20或者2013-34-1109:07:20,月份很奇怪,然后发现yyyy-mm-ddHH:mm:ss中月份的MM被我小写了,这导致在格式化时会把分钟的时间放到月份位置,也就出现了奇怪的是月份,经过修改为
SimpleDateFormatf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
之后,时间就正常了.
虽然很简单,但是提示我,再简单的一行代码也会有出错的可能.
下面记录一下SimpleDateFormat 的用法
Java 代码:
import java.text.SimpleDateFormat; SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss "); Date curDate = new Date(System.currentTimeMillis());//获取当前时间 String str = formatter.format(curDate);
以上可以获取当前的年月时分,也可以合起来写(如下):
Java代码:
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String date = sDateFormat.format(new java.util.Date());
<wbr style="line-height:25px; font-family:'WenQuanYi Micro Hei Mono','WenQuanYi Micro Hei','Microsoft Yahei Mono','Microsoft Yahei',sans-serif!important"></wbr>
如果想获取当前的年月,则可以这样写(只获取时间或者秒种用法一样):
Java代码:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM"); String date=sdf.format(new java.util.Date());
<wbr style="line-height:25px; font-family:'WenQuanYi Micro Hei Mono','WenQuanYi Micro Hei','Microsoft Yahei Mono','Microsoft Yahei',sans-serif!important"></wbr>
当然还有就是可以指定时区的时间(待):
df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,Locale.CHINA); System.out.println(df.format(new Date()));
<wbr style="line-height:25px; font-family:'WenQuanYi Micro Hei Mono','WenQuanYi Micro Hei','Microsoft Yahei Mono','Microsoft Yahei',sans-serif!important"></wbr>
如何获取Android系统时间是24小时制还是12小时制:
ContentResolver cv = this.getContentResolver(); String strTimeFormat = android.provider.Settings.System.getString(cv, android.provider.Settings.System.TIME_12_24); if(strTimeFormat.equals("24")) { Log.i("activity","24"); }
<wbr style="line-height:25px; font-family:'WenQuanYi Micro Hei Mono','WenQuanYi Micro Hei','Microsoft Yahei Mono','Microsoft Yahei',sans-serif!important"></wbr>
取得系统日期:
Calendar c = Calendar.getInstance(); year = c.get(Calendar.YEAR); month = c.grt(Calendar.MONTH); day = c.get(Calendar.DAY_OF_MONTH); hour = c.get(Calendar.HOUR_OF_DAY); minute = c.get(Calendar.MINUTE);
利用Time获取:Time t=new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone资料。 t.setToNow(); // 取得系统时间。 int year = t.year; int month = t.month; int date = t.monthDay; int hour = t.hour; // 0-23 int minute = t.minute; int second = t.second;//唯一不足是取出时间只有24小时模式