String 类的静态方法format()方法用于创建格式化字符串,format()方法有两种重载形式:

  • format(String fromat,Object...args)

    该方法使用指定的格式字符串和参数返回一个格式化的字符串,格式化后的新字符串使用本地默认的语言环境。

    语法:String.format(String.format,Object...args)
    Date date = new Date();
String.format("%tH",date);
  • format(Local l,String,Oblect...args)
    Date date = new Date();
String.format(Locale.CANADA,"%tH",date); //Locale 参数可以指定默认的语言环境。
  • 注意:

    • l:格式化过程中要应用的语言环境。如果l为null,则不进行本地化。
    • format:格式字符串。
    • args:格式字符串有格式说明符应用的参数。如果还有格式说明符意外的参数,则可以忽略这些额外的参数,此参数是可变的,可以为0。
  • 日期的格式化

在程序设计中,经常涉及到时间以及日期的输入输出,想要输出满意的日期和时间格式需要大量的代码和算法才能实现。

Java中format()方法通过给特定的转换字符作为参数来实现对时间和日期的格式化,方便平时的使用。

  • 返回一个月中的天数:
Date date = new Date();         //创建Date对象date。
// 定义一个String类型的的数据 s,并通过String的format方法对其初始化赋值。
String s = String.format("%te",date); //通过format() 方法对date进行格式化,。

然后我们可以控制输出一下:

System.out.println("今天是一个月中的第:"+s+"天");    // 控制输出Date对象s。

输出结果:

上述的代码中的变量s的值是当前日期在当月中的第几天。%te是转换符。通常使用的日期转换符如下表所示。

转换符 说明 示例
%ta 指定环境下的星期几简称 mon,星期一
%tA 指定语言环境下的星期几全称 monday,星期一
%tb 指定语言环境下的月份简称 feb,二月
%tB 指定语言环境的月份全称 february,二月
%te 一个月中的第几天 (1-31)2
%tc 包括全部日期和时间信息 星期二,三月 25 13:37:22 cst 2019
%td 一个月中的第几天(01-31) 02
%te 一个月中的某一天 2
%tm 月份 03
%ty 2位年份 19
%tY 4位年份 2019
%tj 一年中的第几天(001-366) 03

在项目中创建类,并实现当前日期的各种格式的输出:


public static  void main(String[] args){
/*
* 日期的格式化
*/
Date date = new Date();
String s=String.format("%tc", date); //通过format()方法对date格式化。
System.out.println(s);// 将date赋值给一个字符串的时候输出的却是当前语言的格式。
System.out.println(date);//直接输出date是英文格式下的全部时间及日期信息。
System.out.println("------------------------分界线-----------------------------------");
String day = String.format("%te", date);//一个月中的某一天。
String month = String.format("%tb", date);//指定语言环境下的月份
String week = String.format("%ta", date);//指定环境下星期
String foryear = String.format("%tY", date);//四位年份
String oneyearday = String.format("%tj", date);//一年中的第几天
String onemonthday = String.format("%td", date);//一个月中的第几天
String onemonth = String.format("%tm", date);//月份(纯数字)
String twoyear = String.format("%ty", date);//两位数年份 System.out.println(day);
System.out.println(month);
System.out.println(week);
System.out.println(foryear);
System.out.println(oneyearday);
System.out.println(onemonthday);
System.out.println(onemonth);
System.out.println(twoyear);
System.out.println("------------------------分界线-----------------------------------");
System.out.println(foryear +"."+onemonth+"."+ onemonthday);//输出数字格式年月份。
System.out.println(foryear+"年"+month+week);

输出结果:


  • 时间的格式化

使用format()方法,不仅能够实现日期的格式化,还可以实现时间的格式化,且,时间的格式化要更多,更精确,它可以将时间格式化为时,分,秒,毫秒。格式化时间的转换符如下表。

转换符 说明 示例
%tH 2位数的24小时制小时(00-23) 14
%tI 2位数的12小时制小时(01-12) 05
%tK 2位数的24小时的小时(0-23) 5
%tl 2位数的12小时制的小时(1-12) 10
%M 2位数的分钟(00-59) 05
%tS 2位数的秒数 14
%tL 3位数的毫秒数 920
%tN 九位数的微妙数 062000000
%tp 指定环境下上午或下午的标记 下午,pm
%tz 相对于GMT RFC 82格式的数字时区偏移量 CST
%tZ 时区的缩写形式的字符串 CST
%ts 1970-01-01 00:00:00 至现在经过的秒数 1206426646
%tQ 1970-01-01 00:00:00 至现在经过的毫秒数 1206426737453

创建相关类,实现当前时间信息的各种初始化。

/*
* 时间的格式化
*/
String hour=String.format("%tH", date); //格式化date,24小时制的小时。
String minute=String.format("%tM", date); // 两位数的分钟。
String second=String.format("%tS", date); // 两位数的秒钟。
System.out.println("现在的时间是:"+hour+"点"+minute+"分"+second+"秒");//输出时间。

输出结果:


  • 时间与日期的组合格式化

那么现在,我们学会了时间及日期分别的不同类型的格式化,而在日常使用中呢,我们通常是将两者结合,输出固定格式的时间日期。那么接下来,我们将时间,日期的格式化通过不同的组合,就可以输出不同格式化的时间日期显示了。

首先,让我们尝试一下使用多种格式化的方法自己组合完整的时间日期格式化:

/**
* 通过时间与日期的多种不同的格式化方法组合,在加上略微的调整,就可以格式化出完整的时间日期的格式了。
* 但我们很容易的发现,这样一个一个的组合起来实在是太麻烦了。那么format()也有完整的格式化时间,以及日期的方法,方便使用。
*/
System.out.println(foryear +"-"+onemonth+"-"+ onemonthday+" "+hour+":"+minute+":"+second);

输出结果:

现在我们知道了自己组合使劲按与日期的完整格式化输出实在是太麻烦了,并且我们也知道了format()方法中也给我们提供了完整的时间与日期的几种格式化方案,我们可以按照需要选择不同的方案来组合不同的格式化时间日期输出。时间,日期的几种最常见的格式化转换符如下表所示:

转换符 说明 示例
%tF 按照年-月-日格式输出(4位年份) 2019-2-26
%tD 月/日/年格式输出(2位年份) 02/26/19
%tc 输出全部日期和时间信息 星期三 三月 25 15:20:03 CST 2019
%tr 时:分:秒 PM(AM)格式(12小时制) 10:23:45 下午
%tT 时:分:秒格式(12小时制) 15:23:34
%tR 时:分格式(24小时制) 15:34

下面我们在创建的项目类中定义这样几个字符串,并使用String的fromat()方法格式化时间日期,并赋值给这几个字符串,然后我们在进行输出,来尝试下这种时间日期的格式化输出方式。

// 定义几个不同的字符串数据,并初始化赋值,使用String的fromat() 方法将date对象格式化后赋值给字符串。
String day1=String.format("%tF", date);//第一种日期格式 2019-03-26
String day2=String.format("%tD", date);//第二种日期格式 03/26/19
String time1=String.format("%tr", date);//第一种时间格式 03:22:34 下午 (时:分:秒 PM/AM 12小时制)
String time2=String.format("%tT", date);//第二种时间格式 15:34:23 (时:分:秒 24小时制)
String time3=String.format("%tR", date);//第三种时间格式 15:23 (时:分) String timeandday=String.format("%tc",date);// 输出全部时间日期信息。

然后进行输出:

System.out.println("------------------------分界线-----------------------------------");
System.out.println(day1); // 输出各种格式化时间日期.
System.out.println(day2);
System.out.println(time1);
System.out.println(time2);
System.out.println(time3); System.out.println(timeandday);
System.out.println("------------------------分界线-----------------------------------");
System.out.println("直接输出格式化后的date对象:"+String.format("%tF",date)+" "+String.format("%tT",date)); //直接输出格式化的date对象。
System.out.println("通过变量赋值,间接输出格式化时间日期;"+day1+" "+time2);//组合两种格式,输出完整的日期时间格式。

输出结果:

最后我们结合这两种格式化,将日期时间完整的格式化输出:

//我们可以明显的发现,这样的格式化输出,明显要比之前的好很多。

System.out.println(day1+" "+time2);//组合两种格式,输出完整的日期时间格式。

  • 常规类型的格式化

我们知道,数据类型有几大常规类型,那么关于常规类型的数据类型的格式化,需要注意的一点是,常规数据类型的格式化是可以应用于任何参数类型的。可通过下表转换符来实现。

转换符 说明 示例
%b,%B 结果转换为布尔类型 true
%h,%H 结果被格式化为散列码 A05A5198
%s,%S 结果被格式化字符串 "abcd"
%c,%C 结果被格式为字符类型 ‘a’
%d 结果被格式为十进制整数 40
%o 结果被格式为八进制整数 11
%x,%X 结果被格式为十六进制整数 4b1
%e 结果被格式为用计算机科学计数法表示的十进制数 1.700000e+01
%a 结果被格式化为带有效数字和指数的十六进制的浮点值 0X1.C0000000000001P4
%n 结果被特定于平台的行分隔符
%% 结果为字面值‘%’ %

接下来我们动手实验下,随便定义几个字符串类型的变量,并使用String静态类的format()方法来尝试使用不同的转换符格式化不同的基本数据类型:

String str = String.format("%d",400/2);  // 将结果格式化为十进制数。
String str1 = String.format("%b",3>5); // 将结果格式化为布尔类型。
String str2 = String.format("%x",200); // 将结果格式化为十六进制制数。 System.out.println(str);
System.out.println(str1);
System.out.println(str2);

输出结果:


更新时间:

2019-3-26 21:51

【java初探】——格式化字符串的更多相关文章

  1. %1$s %1$d Android string (java & Android 格式化字符串)

    1$s // String%1$d // int //R.string.old:<string name="old">我今年%1$d岁了</string> ...

  2. [java初探总结篇]__java初探总结

    前言 终于,java初探系列的学习,要告一阶段了,java初探系列在我的计划中是从头学java中的第一个阶段,知识主要涉及java的基础知识,所以在笔记上实在花了不少的功夫.虽然是在第一阶段上面花费了 ...

  3. java.text.MessageFormat格式化字符串时的小技巧

    java.text.MessageFormat格式化字符串时的小技巧 public static void main(String[] args) throws InterruptedExceptio ...

  4. java中实现与.net的format格式化字符串输出

    Java中的格式化字符串 System.out.println(MessageFormat.format("name={0}", "张三")); .net中的格 ...

  5. [Java初探04]__字符串(String类)相关

    前言 接下来将暂时将重心偏移向实际操作,不在将大量时间花费在详细的知识点整理上,将会简略知识总结笔记的记录,加强实际练习的时间,实例练习篇也不再同步进行,我会将部分我觉得重要的源码更新在每节知识点后面 ...

  6. JAVA中String.format的用法 格式化字符串,格式化数字,日期时间格式化,

    1.对整数进行格式化:%[index$][标识][最小宽度]转换方式        我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解, ...

  7. java 下对字符串的格式化

    1.对整数进行格式化:%[index$][标识][最小宽度]转换方式         我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解 ...

  8. Java数字格式化输出时前面补0

    Java数字格式化输出时前面补0 星期日 2014年11月30日|  分类: Java     /** * 里数字转字符串前面自动补0的实现. * */ public class TestString ...

  9. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

随机推荐

  1. Ng第十二课:支持向量机(Support Vector Machines)(一)

    1 目录 支持向量机基本上是最好的有监督学习算法了,从logistic回归出发,引出了SVM,揭示模型间的联系,过渡自然. 2 重新审视logistic回归 Logistic回归目的是从特征学习出一个 ...

  2. 一份不太简短的LaTeX模板

    编译环境: Ubuntu16.04 texllive2016 sublime text3 + latextools 该模板使用与自己写文档,记笔记,记录代码,写作业等等. %!TEX program ...

  3. bzoj5109(图论好题)

    我的参考题解:https://www.cnblogs.com/ccz181078/p/7907022.html: 不过我感觉题解的压位有问题,(1<<x)还不炸上天.不过这题数据水,好像怎 ...

  4. 马士兵hibernate(原始笔记)

    马士兵hibernate(原始笔记) 课程内容 1        HelloWorld a)   Xml b)   annotation 2        Hibernate原理模拟 - 什么是O/R ...

  5. Swift3 KWWebView的页面屏幕自适应

    lazy var webView:WKWebView = { /* NSString *jScript = @"var meta = document.createElement('meta ...

  6. TryEnterCriticalSection___Delphi

    VOID EnterCriticalSection:非阻塞函数.将当前线程对指定临界区的引用计数减1:在使用计数变为零时,另一等待此临界区的一个线程将被唤醒. BOOL TryEnterCritica ...

  7. Android-Kotlin-继承

    上一篇博客 Android-Kotlin-配置/入门 配置好了 AndroidStudio Kotlin 的环境: 1.先看一个案例,子类使用到父类的资源 [案例一] 父类 张翠山: package ...

  8. PSP个人项目耗时对比记录表:四则运算

    Personal Software Process Stages Time(%) 计划 5    •估计这个任务需要多长时间 5 开发 60    •需求分析  5    •生成设计文档  5     ...

  9. 应该知道的Linux技巧【转】

    这篇文章来源于Quroa的一个问答<What are some time-saving tips that every Linux user should know?>—— Linux用户 ...

  10. Django:全文检索功能可参考博客

    https://blog.csdn.net/AC_hell/article/details/52875927 https://www.zmrenwu.com/courses/django-blog-t ...