Java格式化日期,时间(三种方法,建议收藏)_java 日期格式化-程序员宅基地

技术标签: java  JavaEE  

1.String.format()

在java中String类格式化的方法,是静态format()用于创建格式化的字符串。

format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。

format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。

1.1日期格式化

常用的日期转换格式符

转换符 说明 示例
%te 一个月中的某一天(1~31) 10
%td 一个月中的第几天(1~31) 03
%tj 一年中的第几天(1~366) 020
%tb 指定语言环境的月份简称 Feb(英文)、二月(中文)
%tB 指定语言环境的月份全称 February(英文)、二月(中文)
%ta 指定语言环境的星期简称 Mon(英文)、星期一(中文)
%tA 指定语言环境的星期全称 Monday(星期一)、星期一(中文)
%tc 包括全部日期和时间信息 星期六  六月  10  09:10:20 CST 2023
%tY 4位年份 2023
%ty 2位年份 23
%tm 月份 05

 实例:

 public class Demo {
     public static void main(String[] args) {
          Date date = new Date();
          String day = String.format("%te", date);
          System.out.println("今天是2019年8月:" + day + "号");
          String month = String.format("%tb", date);
          System.out.println("现在是2019年:" + month);
          String xingqi = String.format("%tA", date);
          System.out.println("今天是:" + xingqi);
         String year = String.format("%tY", date);
         System.out.println("现在是:" + year + "年");
     }
 }

结果:

 1.2时间格式化

常用的时间格式转换符

转换符 说明 示例
%tH 2位数字的24时制的小时(00~23) 13
%tI 2位数字的12时制的小时(00~23) 01
%tM 2位数字的分钟(00~59) 05
%tS 2位数字的秒数(00~60) 12
%tL 3位数字的毫秒(000~999) 666
%tp 指定语言环境下的上午或下午标记 下午(中文)、pm(英文)
%tZ 时区缩写形式的字符串

CST

实例:

  public class Demo {
     public static void main(String[] args) {
         Date date = new Date();
         String hour = String.format("%tH", date);
         String minute = String.format("%tM", date);
         String second = String.format("%tS", date);
         System.out.println("现在是:" + hour + "点" + minute + "分" + second + "秒");
         System.out.println("##################################");
         String hour2 = String.format("%tI", date);
         String pm = String.format("%tp", date);
         System.out.println("现在是:" + pm + hour2 + "点" + minute + "分" + second + "秒");
     }
 }

结果:

 1.3常见的日期和时间组合的格式

转换符 说明 示例
%tF "年-月-日"格式 2021-05-09
%tD "月/日/年"格式 05/09/2021
%tT "时:分:秒" 24时制 08:20:42
%tR "时:分" 24时制

08:20

  public class Demo {
      public static void main(String[] args) {
          Date date = new Date();
          String time = String.format("%tc", date);
          String form = String.format("%tF", date);
          String form2 = String.format("%tD", date);
          String form3 = String.format("%tr", date);
          String form4 = String.format("%tT", date);
          String form5 = String.format("%tR", date);
          System.out.println("全部的时间信息是:" + time);
          System.out.println("年-月-日格式:" + form);
          System.out.println("年/月/日格式:" + form2);
          System.out.println("时:分:秒 PM(AM)格式:" + form3);
          System.out.println("时:分:秒格式:" + form4);
          System.out.println("时:分格式:" + form5);
     }
 }

结果:

2.DateFormat 

DateFormat是日期/时间格式化的抽象类,它以与语言无关的方式格式化并分析日期或时间。DataFormat还有一个子类 —— SimpleDateFormat,可用此类格式化日期。其中,最常用的方法是format()方法。

实例:

public class Demo {
    public static void main(String[] args) {
        SimpleDateFormat sdf1 = new SimpleDateFormat("yy年MM月dd日");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日  HH时mm分");
        SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy年MM月dd日  HH时mm分ss秒");
        SimpleDateFormat sdf5 = new SimpleDateFormat("今年已经过了DDD天,快w个星期,现在是这个月的第W个星期");
        SimpleDateFormat sdf6 = new SimpleDateFormat("现在是E");
        String date1 = sdf1.format(new Date());
        String date2 = sdf2.format(new Date());
        String date3 = sdf3.format(new Date());
        String date4 = sdf4.format(new Date());
        String date5 = sdf5.format(new Date());
        String date6 = sdf6.format(new Date());
        System.out.println(date1);
        System.out.println(date2);
        System.out.println(date3);
        System.out.println(date4);
        System.out.println(date5);
        System.out.println(date6);
    }
}

结果:

 3.SimpleDateFormat 类

        在使用DateFormat 类时,只有固定格式,在java.text.SimpleDateFormat包有一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。 SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。

SimpleDateFormat 类基本构造方法:

SimpleDateFormat 类是DateFormat 类的一个子类。

  • new SimpleDateFormat();默认模式和默认日期格式符号创造。
  • SimpleDateFormat(String pattern);使用指定的模式和默认日期格式符号创造。
  • SimpleDateFormat(String pattern, Locale locale);使用指定的模式和指定语言环境的默认日期符号构造。

DateFormat 也可以new SimpleDateFormat对象。

DateFormat d=new SimpleDateFormat();

代表日期和时间的模式元素字母:

字母 含义 示例
y 年,一个y代表一位 "yyy"代表019,"yyyy"代表2019
M 月份 例如八月,M代表8,MM代表08
w 一年中的第几周 常用ww表示
W 一个月中的第几周 常用WW表示
d 一个月中的第几天 常用dd表示
D 一年中的第几天 常用DDD表示
E 星期几,用E表示星期,根据不同语言环境返回 CHINA表示星期几,US表示英文缩写
a 上午或下午 am代表上午,pm代表下午
H 一天中的小时数,二十四小时制 常用HH表示
h 一天中的小时数,十二小时制 常用hh表示
m 分钟数 常用mm表示
s 秒数 常用ss表示
S 毫秒数 常用SSS表示

 实例:

public class FormatDateTime {
 
    public static void main(String[] args) {
        SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm"); 
        SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
        SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
        SimpleDateFormat myFmt4=new SimpleDateFormat(
                "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
        Date now=new Date(); // 现在的日期
        
        // 按照自定义的时间编排格式 输出时间
        System.out.println(myFmt.format(now));
        System.out.println(myFmt1.format(now));
        System.out.println(myFmt2.format(now));
        System.out.println(myFmt3.format(now));
        System.out.println(myFmt4.format(now));
        System.out.println(now.toGMTString());
        System.out.println(now.toLocaleString());
        System.out.println(now.toString());
    }    
    
}

结果:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/WANGLI123956/article/details/131139869

智能推荐

JVM逃逸分析原理解析:优化Java程序性能和内存利用效率-程序员宅基地

文章浏览阅读1.6k次,点赞32次,收藏22次。逃逸分析是一种用于确定对象在方法的生命周期内是否逃逸出方法外部范围的技术。在Java开发中,逃逸分析用于确定对象的生命周期和作用域,以便进行相应的优化,提高程序的性能和内存利用效率。当一个对象被创建后,它可以在方法内部使用,也可以被传递给其他方法或线程,并在方法外部继续存在。如果对象没有逃逸出方法的作用域,那么JVM可以将其分配在栈上而不是堆上,从而避免了堆内存的分配和垃圾回收的开销。JVM逃逸分析通过静态和动态两种分析方法,确定对象是否可能逃逸出方法的范围。

强化学习笔记-程序员宅基地

文章浏览阅读156次。交叉熵:强化学习Agent与Environment互动过程的结束,比如,一盘围棋的结束。强化学习的过程就是要学习如何最大化在每次episode的时候的预期累计reward。强化学习的难点之一。reward delay有两种情况。1)对于有些场景,当Agent做出Action之后,并不是总是可以立刻得到Reward。比如围棋,在episode之前是无法知道棋局的胜负的,Environment在次期间给出的Reward都是0。_强化学习笔记

史上最全的机器学习资料(上)_redis 机器学习 参数服务器-程序员宅基地

文章浏览阅读5.2k次。摘要: 机器学习牵涉的编程语言十分之广,包括了MATLAB、Python、Clojure、Ruby等等。为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、_redis 机器学习 参数服务器

读取XML文件转成Document_将xml文件转换成document-程序员宅基地

文章浏览阅读2k次。废话不多说,直接上代码:public static void main(String[] args) {Document doc = JavaToCppXml.loadDocumentCppxml("E:/aa.xml");System.out.println(new GetLiveDetectorMessage().postaction(doc));}..._将xml文件转换成document

C语言进阶课程学习记录-第23课 - #error 和 #line 使用分析-程序员宅基地

文章浏览阅读569次,点赞13次,收藏8次。本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程,图片全部来源于课程PPT,仅用于个人学习记录。#error和#warning常应用于条件编译的情形。#warning用于自定义一条编译警告信息。#line用于强制指定新的行号和编译文件名。#error用于自定义一条编译错误信息。

Python专栏 | MNE数据预处理方法——独立成分分析_独立成分分析python-程序员宅基地

文章浏览阅读2k次,点赞5次,收藏9次。系列文章目录Python专栏 | 脑电图和脑磁图(EEG/MEG)的数据分析方法(一)Python专栏 | 脑电图和脑磁图(EEG/MEG)的数据分析方法(二)文章目录系列文章目录预处理(Preprocessing)预处理(Preprocessing)MNE-Python支持多种预处理的方法和技术,如麦克斯韦滤波,信号空间投影,独立成分分析,滤波,降噪采样等(maxwell filtering, signal-space projection, independent component._独立成分分析python

随便推点

v-html命令渲染的内容,使用scoped属性的情况下,样式不起作用_css scoped 对渲染元素不生效-程序员宅基地

文章浏览阅读1.1k次。questionTitle : "题目中有图片">>> 在 sass | less 中不作用,用 /deep/ | ::v-deep 来代替。通过 >>> 可以使得在使用scoped属性的情况下,穿透scoped。Vue 3 中 ::v-deep 被废除了,取而代之的是 ::deep。_css scoped 对渲染元素不生效

微信小程序 - 超详音乐列表点击播放 mp3 wav 音乐文件,支持音频暂停播放 / 图标切换 / 流畅切换音频(暂停音乐后,会保留音乐 “进度“ 再次点击时继续播放)解决pause()暂停问题_微信小程序播放mp3文件-程序员宅基地

文章浏览阅读4.3k次,点赞3次,收藏11次。微信小程序实现列表点击播放音频,微信小程序实现音乐列表:播放、进度把控,微信小程序Audio列表音乐单独播放,音乐播放器,wx.createInnerAudioContext音频如何中断播放,微信小程序如何实现一个音乐列表,微信小程序怎么实现一个音乐播放列表,微信小程序如何播放mp3音频,微信小程序点击暂停音乐及保留进度,小程序音频列表切换音频,完美解决微信小程序音频innerAudioContext.pause()无法暂停,微信小程序wx.createInnerAudioContext()在安卓手机不能播_微信小程序播放mp3文件

【SLAM】LIO-SAM解析——获得高频的lidar里程计TransformFusion(6)_slam频率-程序员宅基地

文章浏览阅读2.5k次,点赞7次,收藏18次。知识点:如何合并一个低频但高精度的里程计和一个高频但低精度的里程计,输出一个高频高精度的里程计。(虽然我觉得代码里IMUPreintegration输出的里程计已经很高频且高精度了)这是LIO-SAM里最小的一个类,它虽然和IMUPreintegration在同一个文件下,但是这个类所处的环节是最靠后的,所以分开讲。LIO-SAM涉及到多个不同的坐标系,首先是lidar系,大部分运算都是在这个系上;baselink是指body系,一般和IMU坐标系重合。6.1 综述Transfor._slam频率

Unity 模型透明度变换,实现3D模型淡入淡出效果。_unity 透明通道 变点点-程序员宅基地

文章浏览阅读3.2k次,点赞8次,收藏26次。开发中我们不仅需要UI界面淡入淡出,有时候还需要模型淡入淡出。我们在面板上修改color的a值时发现并没有效果。那是因为我们设置的RenderingMode是Opaque。官方标准shader中的Opaque pass段是不能显示半透明效果的,所以我们需要设置RenderingMode为Fade或者Transparent。然后在修改color的a值,达到淡入淡出的效果。效果如下:通常我们淡入一个模型只会传入这个模型的GameObject,所以我们自写一个类来处理这个模型淡入的一些事件。代码如下:._unity 透明通道 变点点

关于idea全局搜索不全的坑_idea 全局搜索 查不全-程序员宅基地

文章浏览阅读444次,点赞3次,收藏10次。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/ZyhMemory/article/details/116265194。在Registry中找到ide.usages.page.size进行修改即可,我这里修改的是10000。idea全局搜索默认只显示100个,超出显示100+,不过谁能注意到这个…在Action中输入Registry。通过设置修改一下初始大小。_idea 全局搜索 查不全

什么是动态住宅代理?-程序员宅基地

文章浏览阅读574次。随着网络的迅速发展,许多人对代理IP已经有了比较深刻的认识,并且广泛地运用到了各自的业务中,尤其在跨境的相关业务中表现尤其卓越。对于代理IP的类别,也需要根据自己的业务类型具体选择最合适的,那么今天就给大家具体介绍动态住宅IP代理这一类型,看看它是否契合您的需求呢?