java在用SimpleDateFormat格式化时间时月份出现奇怪值[通俗易懂]

这两天在做课设,关于图书管理系统的,其中在借书的记录中,时间记录的月份总是出现不正常的数值,大于12经常四十几五十几,经过对借书模块的跟踪,最后将错误定位到了时间格式化的这行代码SimpleDateFormat f = newSimpleDateFormat(“yyyy-mm-dd HH:mm:ss”);经过这行代码是要将格式化为常见的2013-07-11 09:07:20这种格式,结果经

大家好,又见面了,我是全栈君。

这两天在做课设,关于图书管理系统的,其中在借书的记录中,时间记录的月份总是出现不正常的数值,大于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());

如果想获取当前的年月,则可以这样写(只获取时间或者秒种用法一样):
Java代码:

 

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM");
String date=sdf.format(new java.util.Date());

当然还有就是可以指定时区的时间(待):

 

df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,Locale.CHINA);
System.out.println(df.format(new Date()));

如何获取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");
  }

 

取得系统日期:

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小时模式
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121475.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Win10 桌面美化

    Win10 桌面美化Win10桌面美化最近发现了几款Win10界面美化的软件,看了看别人家的Win10操作界面,瞬间觉得自己的low了,关键是赏心悦目啊!废话不多说,先看看我原来桌面和美化后的桌面对比图原始桌面美化桌面1.安装RocketDockRocketDock可以提供类似macos的操作系统图标特效,打开安装包进行安装,完毕后启动得到效果如下:可以发现切换效果与mac类似,他默认的主题是C…

  • lookdiv激活码_在线激活

    (lookdiv激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1435QFILVV-eyJsaWNlb…

  • centos7 安装图形界面

    centos7 安装图形界面本人用VMware版本15.0.2build-10952284(关系不大)开启前要在虚拟机–>设置–>3D图形如下如果是云服务器跳过此步yum下载图形界面软件yumgroupinstall”GNOMEDesktop””GraphicalAdministrationTools”修改配置ln-sf/lib/systemd/system…

  • nmap 使用注意事项

    nmap 使用注意事项

  • android之SQLite数据库insert操作

    原型:long android.database.sqlite.SQLiteDatabase.insert(String table, String nullColumnHack, ContentValues values) 参数介绍:table: 要插入数据的表的名称nullColumnHack:当values参数为空或者里面没有内容的时候,我们insert是会失败的(底

  • SQL清空表数据表

    SQL清空表数据表SQL清空表数据表并使得自增ID从1重新开始计数truncatetabletable_name

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号