zoukankan      html  css  js  c++  java
  • Java开发笔记(一百五十二)Date工具的时间格式

    Java开发经常要把当前时间转为字符串,比如“2020-07-08 22:59:48”这样,此时会用到格式化工具SimpleDateFormat,该工具通过下列字符表示不同的时间单位:
    小写的yyyy:表示四位年份数字,如1949、2017等等。
    大写的MM:表示两位月份数字,如01表示一月份,12表示12月份。
    小写的dd:表示两位日期数字,如08表示当月八号,26表示当月二十六号。
    大写的HH:表示24小时制的两位小时数字,如19表示晚上七点。
    小写的mm:表示两位分钟数字,如30表示某个点钟的三十分。
    小写的ss:表示两位秒钟数字。
    按照“2020-07-08 22:59:48”这种字符串样式,对应的日期格式为“yyyy-MM-dd HH:mm:ss”,于是将日期时间转为字符串的代码如下所示:

    	// 获取当前的日期时间字符串
    	public static String getNowDateTime() {
    		// 创建一个日期格式化的工具
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		// 将当前日期时间按照指定格式输出格式化后的日期时间字符串
    		return sdf.format(new Date());
    	}
    

    注意到上述的时间标记有区分大小写,意味着大写字母与小写字母表达的时间是不一样的。例如,大写的MM表示两位月份,而小写的mm表示两位分钟。除此之外,还有以下不怎么常见的时间标记:
    大写的YYYY:同样表示四位年份数字,但它并非指定日期所处的年份,而是指定日期所在周的最后一天(星期六)位于哪个年份。
    大写的D:表示从当年的1月1日开始算的第几天。
    小写的hh:表示12小时制的两位小时数字,如06可同时表示早上六点与傍晚六点。
    大写的SSS:表示三位毫秒数字。
    以上四种时间标记,特别注意大写的YYYY,因为其他标记不管怎样都是取指定日期的某种单位,可是YYYY居然没从指定日期取数,而是先找到那个日期所处的星期,找到那个星期的最后一天,再瞧瞧最后一天在哪个年份。关键每星期的最后一天究竟是星期几呢?按照中国人的习惯,每周最后一天是星期日,然而在西方人看来,每周最后一天却是星期六,所以YYYY要找的正是那个星期的星期六呀。
    话虽如此,还得实地验证一下才行。先看2004年12月31日,当天是星期五,那周的星期六是2005年1月1日,星期日是2005年1月2日。由于不管星期六还是星期日都落在2005年,因此那周的YYYY理应返回2005年,于是编写下面的年份标记验证代码:

    	try {
    		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
    		Date date = sdf1.parse("2004-12-29"); // 2004-12-31是星期五,2005-01-01是星期六
    		SimpleDateFormat sdf2 = new SimpleDateFormat("YYYY-MM-dd");
    		String str = sdf2.format(date);
    		System.out.println("str="+str);
    	} catch (ParseException e) {
    		e.printStackTrace();
    	}
    

    运行上面代码,看到如下所示的输出日志,果然2004年底的YYYY变成了2005。

    	str=2005-12-29
    

    再看2005年12月31日,当天是星期六,那周的星期日是2006年1月1日。由于那周的星期六落在2005年,而星期日落在2006年,因此那周的YYYY应当返回2005年(如果每周最后一天是星期六的话)。此时年份标记验证代码示例如下:

    	try {
    		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
    		Date date = sdf1.parse("2005-12-29"); // 2005-12-31是星期六,2006-01-01是星期日
    		SimpleDateFormat sdf2 = new SimpleDateFormat("YYYY-MM-dd");
    		String str = sdf2.format(date);
    		System.out.println("str="+str);
    	} catch (ParseException e) {
    		e.printStackTrace();
    	}
    

    运行上面代码,看到如下所示的输出日志,发现2005年底的YYYY仍为2005,从而证明了这个结论:在Java编程当中,星期六才是每周的最后一天。

    	str=2005-12-29
    

      

    更多Java技术文章参见《Java开发笔记(序)章节目录

  • 相关阅读:
    WINDOWS 远程桌面不能直接拷贝文件问题
    Spring的xml文件详解
    xml名称空间详解
    markdown基本语法
    web.xml文件详解
    Spring事务的7中传播行为
    docker修改容器配置文件
    Load balancer does not have available server for client: CLOUD-PROVIDER-HYSTRIX-PAYMENT
    layui导出表格的两种方法
    解决:Error:java: 无效的源发行版: 12
  • 原文地址:https://www.cnblogs.com/pinlantu/p/13274434.html
Copyright © 2011-2022 走看看