Java中Calendar类的简单使用方法,以及日期格式化的方法,字符串日期格式的验证
2016-09-29 15:08
861 查看
上一篇文章中用到了 Calendar 类,这里顺便说一下它的简单运用方法。先看一段代码:
这里通过 getInstance() 创建 Calendar 对象,获取当前系统的时间。
第一段代码分别获取 Calendar 中的年月日时分秒,然后打印在控制台,这里要注明的是 Calendar 的月是从0开始的,一年12个月分
别是0~11,所以上面对月份进行了 +1 操作。
第二段代码则是直接获取 Calendar 的时间,然后通过格式化后打印在控制台。
从结果我们可以看出一些不一样的地方,格式化的时间与我们单独获取拼接的时间,其中的0~9的显示方式不同,单独获取的是 int
类型,0~9只是显示成0~9,而格式化的值则显示为00~09。所以这里要强调一个问题,当我们在对这些值进行比较时,尤其是用到
字符串的 equals() 方法时,0和00并不相等,博主在之前没注意就在这个问题上卡了一会。
我们在之前两段代码的中间再加上以下代码来看看运行结果:
可以看出来,第二次打印的时间不再是系统时间了,而是我们设置的时间,通过这样
4000
的方式,可是设置 Calendar 为我们想要的时
间,这里还要提一下的是在设置“小时”时,有两个方式,分别为 Calendar.HOUR_OF_DAY 和 Calendar.HOUR ,这两个得区别是前
者是24h制,后者是12h制。
Calendar 类还有很多运用方法,这里不再做详细阐述,感兴趣的朋友可以去查看 JDK 文档下的 java.util.Calendar 类的说明,没有比
这里再全的资料了。
上文中还用到了一个 SimpleDateFormat 类,这个类就是用来格式化的。
先看一段运用代码及结果:
从结果可以看出,上面两段代码分别将 Date 转为 String 和 String 转为 Date。
其中的关键是
这里面的大小写需要注意一下,MM为月份,mm为分钟,HH是24h制,hh是12h小时制,其余的小写就可。
这里介绍的只是简单的常用格式,还有更全的格式就不做具体说明了,依旧可以去查阅 JDK 文档了解。
最后再附上一段代码,用于验证字符串是否是一个合法的日期格式:
public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); System.out.println(format.format(calendar.getTime())); }再看一下运行结果:
这里通过 getInstance() 创建 Calendar 对象,获取当前系统的时间。
第一段代码分别获取 Calendar 中的年月日时分秒,然后打印在控制台,这里要注明的是 Calendar 的月是从0开始的,一年12个月分
别是0~11,所以上面对月份进行了 +1 操作。
第二段代码则是直接获取 Calendar 的时间,然后通过格式化后打印在控制台。
从结果我们可以看出一些不一样的地方,格式化的时间与我们单独获取拼接的时间,其中的0~9的显示方式不同,单独获取的是 int
类型,0~9只是显示成0~9,而格式化的值则显示为00~09。所以这里要强调一个问题,当我们在对这些值进行比较时,尤其是用到
字符串的 equals() 方法时,0和00并不相等,博主在之前没注意就在这个问题上卡了一会。
我们在之前两段代码的中间再加上以下代码来看看运行结果:
calendar.set(Calendar.YEAR, 2016); calendar.set(Calendar.MONTH, 1-1); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 6); calendar.set(Calendar.MINUTE, 15); calendar.set(Calendar.SECOND, 30);
可以看出来,第二次打印的时间不再是系统时间了,而是我们设置的时间,通过这样
4000
的方式,可是设置 Calendar 为我们想要的时
间,这里还要提一下的是在设置“小时”时,有两个方式,分别为 Calendar.HOUR_OF_DAY 和 Calendar.HOUR ,这两个得区别是前
者是24h制,后者是12h制。
Calendar 类还有很多运用方法,这里不再做详细阐述,感兴趣的朋友可以去查看 JDK 文档下的 java.util.Calendar 类的说明,没有比
这里再全的资料了。
上文中还用到了一个 SimpleDateFormat 类,这个类就是用来格式化的。
先看一段运用代码及结果:
public static void main(String[] args) { // 日期转字符串 Calendar calendar = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); System.out.println(format.format(calendar.getTime())); // 字符串转日期 String date = "2016-01-01 01:01:01"; try { System.out.println(format.parse(date)); } catch (ParseException e) { e.printStackTrace(); } }
从结果可以看出,上面两段代码分别将 Date 转为 String 和 String 转为 Date。
其中的关键是
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);第一个参数确定了转换格式,yyyy是完整的公元年,MM是月份,dd是日期,HH是小时,mm是分钟,ss是秒。
这里面的大小写需要注意一下,MM为月份,mm为分钟,HH是24h制,hh是12h小时制,其余的小写就可。
这里介绍的只是简单的常用格式,还有更全的格式就不做具体说明了,依旧可以去查阅 JDK 文档了解。
最后再附上一段代码,用于验证字符串是否是一个合法的日期格式:
/** * 验证字符串是否是一个合法的日期格式 * @param date 日期字符串 * @param template 要匹配的日期格式 * @return 返回验证结果,boolean值 */ private boolean isValidDate(String date, String template) { boolean convertSuccess = true; // 指定日期格式 SimpleDateFormat format = new SimpleDateFormat(template, Locale.CHINA); // 例如:yyyy-MM-dd HH:mm:ss try { // 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01 format.setLenient(false); format.parse(date); } catch (Exception e) { // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 convertSuccess = false; } return convertSuccess; }
相关文章推荐
- Android工具类,一些方法电话正则,是否为空,日期格式化,星期,车牌,身份证校验,设置地区编码,验证日期字符串是否是YYYY-MM-DD格式,判断字符串是否为数字
- 使用Java对字符串进行MD5加密以及验证
- JAVA获取当前日期以及将字符串转成指定格式的日期
- 判断输入的字符串是否是日期格式的简单方法
- JAVA字符串格式化-String.format()的使用 及 Android 中 string.xml 中 字符串格式转化
- 用类名做方法的返回值类型 在学习Java的初始阶段,很多同学使用基本数据类型定义变量和引用类型定义变量以及使用类名做方法的返回值类型常常不知所以。今天我以自己的解读方式和个人的理解作一个简单的解释,和
- java 日期格式化-- SimpleDateFormat 的使用。字符串转日期,日期转字符串
- java字符串格式化:String.format()方法的使用
- Java使用DateFormatter格式化日期时间的方法示例
- Java 以指定日期时间格式获取当前时间、以及每隔一秒刷新一次的方法------附带实例
- java中字符串的格式以及日期的加减运算
- java 字符串格式化方法 String.format()的使用
- Java字符串分割方法split()的功能以及使用方法的详细介绍!
- Asp.Net和LinQ中把日期转换为一定格式的字符串的方法!(最简单的一种实例)
- java采用DateFormat日期格式化方法判断用户今天是否第一次登录(比较简单)
- JAVA获取当前日期以及将字符串转成指定格式的日期
- js中使用eval()方法将字符串转换成日期格式、并获取指定时间的日期
- 【java字符串格式化】String.format()使用方法
- Java中字符串split() 的使用方法.没你想的那么简单