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

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

(0)
上一篇 2022年3月9日 上午8:00
下一篇 2022年3月9日 上午9:00


相关推荐

  • 如何判断Linux是32位还是64位

    如何判断Linux是32位还是64位

    2021年10月18日
    40
  • 如何完全卸载PyCharm

    如何完全卸载PyCharm进入 bin 文件 找到 uninstall 双击即可

    2026年3月27日
    2
  • 什么是协方差,怎么计算?为什么需要协方差?

    什么是协方差,怎么计算?为什么需要协方差?均值 方差和标准差学过概率统计的孩子都知道 统计里最基本的概念就是样本的均值 方差 或者再加个标准差 首先我们给你一个含有 n 个样本的集合 依次给出这些概念的公式描述 这些高中学过数学的孩子都应该知道吧 一带而过 很显然 均值描述的是样本集合的中间点 它告诉我们的信息是很有限的 而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均 以这两个集合为例 0 8 12 20 和

    2026年3月26日
    2
  • windows批处理删除文件

    windows批处理删除文件需要批量删除一些文件 如果用 dos 命令 可快速的批量删除 点击 开始 运行 输入 CMD 后回车 然后在 命令提示符 窗口下输入 delF desktop ini f s q a F 代表你要操作的盘符 如果是 C 盘就把 F 改成 C 强制删除 F 盘下所有目录内 包括 X 盘本身 的 desktop ini 文件并且不提示是否删除 f 表示强制删除文件 s 表示子目录都要

    2026年3月17日
    1
  • vista激活工具下载_windows7激活工具免费

    vista激活工具下载_windows7激活工具免费转贴自http://hi.baidu.com/guoguo6688/blog/item/9028ab452f26ee3e879473bf.html激活成功教程激活Vista的利器——集三种激活成功教程方法于一身的激活成功教程工具(经测试:成功激活并通过正版验证)——Vista自动激活工具(综合版):该工具以自动运行方式,集成了截止目前成功的激活成功教程成果,包括:MKS服务器激活/加载设备驱动、模拟OEM信息激活/软

    2022年10月12日
    6
  • windows用户权限分配(进程权限)

    首先提升本进程的权限 BOOLEnaleDebugPrivilege(){HANDLEhToken;BOOLfOk=FALSE;if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken)){TOKEN_PRIVILEGEStp;tp.Pr

    2022年4月12日
    87

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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