格式化字符串

来源:互联网 发布:幼儿园美工室制度 编辑:程序博客网 时间:2024/06/10 22:24

格 式 化 字 符 串 是 程 序 中 经 常 用 到 的 , 主 要 包 括 日 期 格 式 化 、 时 间 格 式 化 、 日 期 / 时 间 组 合 的 格 式 化 和 常 规 类 型 格 式 化 。

格式化方法

在 应 用 程 序 设 计 中 , 经 常 需 要 显 示 时 间 和 日 期 。 format() 方 法 通 过 给 定 的 特 殊 转 换 符 作 为 参 数 来 实 现 对 日 期 和 时 间 的 格 式 化 。 rmat() 方 法 有 以 下 两 种 重 载 形 式 。

1. format(String format,Object…args) 方 法

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

语 法 格 式 如 下 :

str.format(String format,Object...args) 

■ format : 格 式 化 转 换 符 。
■ args : 格 式 化 字 符 串 中 格 式 说 明 符 引 用 的 参 数 。 如 果 还 有 格 式 说 明 符 以 外 的 参 数 , 则 忽 略 这 些 额 外 的 参 数 。 此 参 数 的 数 目 是 可 变 的 , 可 以 为 0 。
■ 返 回 值 : 一 个 格 式 化 的 字 符 串 。

2 , format(LocaI I,String format,Object•••args) 方 法

该 方 法 使 用 指 定 的 格 式 字 符 串 和 参 数 , 格 式 化 后 的 新 字 符 串 使 用 参 数 所 规 定 的 语 言 环 境 , 返 回 格 式 化 后 的 字 符 串 。

语 法 格 式 如 下 :

str.fomat(Local l,String format,Object...args ) 

■ l : 格 式 化 过 程 中 要 应 用 的 语 言 环 境 。 如 果 1 为 null, 则 不 进 行 本 地 化 。
■ format : 格 式 化 转 换 符 。
■ args : 格 式 化 字 符 串 中 格 式 说 明 符 引 用 的 参 数 。 如 果 还 有 格 式 说 明 符 以 外 的 参 数 , 则 忽 略 这 些 额 外 的 参 数 。 此 参 数 的 数 目 是 可 变 的 , 可 以 为 0 。
■ 返 回 值 : 一 个 格 式 化 字 符 串 。


日期格式化

使 用 format() 方 法 对 日 期 进 行 格 式 化 时 , 会 用 到 日 期 格 式 化 转 换 符 .

常 用 的 日 期 格 式 化 转 换 符

这里写图片描述

在 项 目 中 创 建 Example 类 , 在 该 类 的 主 方 法 中 创 建 一 个 Date 日 期 类 的 实 例 对 象 today , 利 用 format() 方 法 格 式 化 today 日 期 对 象 。

import java.util.Date;import java.util.Locale;public class Example {    public static void main(String args[]){        Date today=new Date();        //格式化后的字符串为月份的英文缩写        String a=String.format(Locale.US, "%tb", today);        //格式化后的字符串为月份的英文全称        String b=String.format(Locale.US,"%tB",today);        //格式化后的字符串为星期简称        String c=String.format(Locale.US,"%ta" ,today);        //格式化后的字符串为星期全称        String e=String.format(Locale.US,"%tA",today);        //格式化后的字符串为4位的年份        String f=String.format("%tY",today);        //格式化后的字符串为2位的年份        String g=String.format("%ty",today);        //格式化后的字符串为2位的月份值        String h=String.format("%tm",today);        //格式化后的字符串为2位的日期值        String i=String.format("%td",today);        //格式化为1位值的日期        String j=String.format("%te",today);        //格式化后的字符串为一年中的第几天        String k=String.format("%tj",today);        System.out.println("格式化后的字符串为月份的英文缩写"+a);        System.out.println("格式化后的字符串为月份的英文全称"+b);        System.out.println("格式化后的字符串为星期简称"+c);        System.out.println("格式化后的字符串为星期全称"+e);        System.out.println("格式化后的字符串为4位的年份"+f);        System.out.println("格式化后的字符串为2位的年份"+g);        System.out.println("格式化后的字符串为2位的月份值"+h);        System.out.println("格式化后的字符串为2位的日期值"+i);        System.out.println("格式化为1位值的日期"+j);        System.out.println("格式化后的字符串为一年中的第几天"+k);    }}

结果:

格式化后的字符串为月份的英文缩写Aug
格式化后的字符串为月份的英文全称August
格式化后的字符串为星期简称Sat
格式化后的字符串为星期全称Saturday
格式化后的字符串为4位的年份2017
格式化后的字符串为2位的年份17
格式化后的字符串为2位的月份值08
格式化后的字符串为2位的日期值12
格式化为1位值的日期12
格式化后的字符串为一年中的第几天224


时间格式化

使 用 format() 方 法 对 时 间 进 行 格 式 化 时 , 会 用 到 时 间 格 式 化 转 换 符 。 时 间格 式 化 转 换 符 要 比 日 期 转 换 符 更 多 、 更 精 确 , 它 可 以 将 时 间 格 式 化 为 时 、 分 、 秒 、 毫 秒 。

常 用 的 时 间 格 式 化 转 换 符

这里写图片描述

Demo

在项目中创建GetTime类,在主方法中创建String型变量,实现时间各种格式的转换,并在控制台输出结果。

import java.util.Date;import java.util.Locale;public class GetTime {    public static void main(String[] args) {        Date date=new Date();        System.out.println("默认时间格式:"+date);        System.out.println("2位的24时制的小时:"+String.format("%tH", date));        System.out.println("2位数字的12时制的小时:"+String.format("%tI", date));        System.out.println("2位数字的24时制的小时:"+String.format("%tk",date));        System.out.println("2位数字的12时制的小时:"+String.format("%tl", date));        System.out.println("2位数字的分钟:"+String.format("%tM:", date));        System.out.println("2们数字的秒数:"+String.format("%tS",date));        System.out.println("3位数字的毫秒数:"+String.format("%tL",date));        System.out.println("9位数字的微秒数:"+String.format("%tN",date));        //不写默认本地        System.out.println("美国上下午标记"+String.format(Locale.US,"%tp",date));        System.out.println("相对于GMT RFC 82格式的数字时区偏移量"+String.format("%tz", date));        System.out.println("时区缩写形式的字符串"+String.format("%tZ", date));        System.out.println("从1970-01-01 00:00:00至现在经过的毫秒数"+String.format("%ts", date));        System.out.println("从1970-01-01 00:00:00至现在经过的微秒数"+String.format("%tQ",date));    }}

结果

默认时间格式:Sat Aug 12 15:33:45 CST 2017
2位的24时制的小时:15
2位数字的12时制的小时:03
2位数字的24时制的小时:15
2位数字的12时制的小时:3
2位数字的分钟:33:
2们数字的秒数:45
3位数字的毫秒数:655
9位数字的微秒数:655000000
美国上下午标记pm
相对于GMT RFC 82格式的数字时区偏移量+0800
时区缩写形式的字符串CST
从1970-01-01 00:00:00至现在经过的毫秒数1502523225
从1970-01-01 00:00:00至现在经过的微秒数1502523225655


日期时间格式化

因 为 日 期 与 时 间 经 常 是 同 时 出 现 的 , 所 以 格 式 化 转 换 符 还 定 义 了 各 种 日 期 和 时 间 组 合 的 格 式 。

常 用 的 日 期 和 时 间 的 组 合 格 式

这里写图片描述

例:

在 项 目 中 创 建 DateAndTime2 类 , 在 主 方 法 中 创 建 String 型 变 量 , 将 日 期 和 时 间 格 式 化 后 的 结 果 输 出 。

import java.util.Date;public class DateAndTime {    public static void main(String[] args) {        Date date=new Date();        System.out.println("默认的日期时间格式:"+date);        System.out.println("年-月-日:"+String.format("%tF", date));        System.out.println("月/日/年:"+String.format("%tD", date));        System.out.println("全部时期和时间信息:"+String.format("%tc",date));        System.out.println("时:分:秒 PM(AM)(12小时制):"+String.format("%tr",date));        System.out.println("时:分:秒(24小时制)"+String.format("%tT", date));        System.out.println("时:分:秒(24小时制"+String.format("%tR",date));    }}

结果:

默认的日期时间格式:Sat Aug 12 16:53:13 CST 2017
年-月-日:2017-08-12
月/日/年:08/12/17
全部时期和时间信息:星期六 八月 12 16:53:13 CST 2017
时:分:秒 PM(AM)(12小时制):04:53:13 下午
时:分:秒(24小时制)16:53:13
时:分:秒(24小时制16:53


常规类型格式化

在 程 序 设 计 过 程 中 , 经 常 需 要 对 常 规 类 型 的 数 据 进 行 格 式 化 , 如 格 式 化 为 整 数 、 格 式 化 为 科 学 计 数 表 示 等 , 在 Java 语 言 中 可 以 使 用 常 规 类 型 的 格 式 化 转 换 符 来 实 现 。

常 规 类 型 的 格 式 化 转 换 符

|这里写图片描述

例:

在项目中创建General类,在主方法中创建String型变量,实现不同类型到字符串的转换。

public class General {    public static void main(String[] args) {        //结果以十进制显示        String str1=String.format("%d", 400/2);        //结果以布尔形式显示        String str2=String.format("%b", 3>5);        //结果以十六进制格式显示        String str3=String.format("%x", 200);        //结果为字面值‘%’        String str4=String.format("%%", 200);        System.out.println("400的一半是:"+str1);        System.out.println("3>5正确吗:"+str2);        System.out.println("200的十六进制数是:"+str3);        System.out.println("结果为字面值%"+"  "+str4);    }}

结果:

400的一半是:200
3>5正确吗:false
200的十六进制数是:c8
结果为字面值% %


Demo:

题目:将数字格式转化成货币格式

数 字 可 以 标 识 货 币 、 百 分 比 、 积 分 、 电 话 号 码 等 , 就 货 币 而 言 , 在 不 同 的 国 家 和 地 区 会 以 不 同 的 格 式 来 定 义 。 本 范 例 将 接 收 用 户 输 入 的 数 字 , 将 这 个 数 字 转 换 为 不 同 国 家 或 地 区 的 货 币 格 式 , 然 后 在 控 制 台 中 输 出 这 些 货 币 格 式 。

在 项 目 中 创 建 FormatNumber 类 , 使 用 format() 方 法 将 数 字 格
式 化 成 不 同 国 家 或 地 区 的 货 币 格 式 。

import java.text.NumberFormat;import java.util.Locale;import java.util.Scanner;public class FormatNumber {    public static void main(String[] args) {        Scanner scan=new Scanner(System.in);        System.out.println("请输入一个数字:");        double number=scan.nextDouble();        System.out.println("Locale类的常量作为构造参数获得不同的货币格式:");        //创建出格式化对象并得到指定语言环境的货币格式        NumberFormat format=NumberFormat.getCurrencyInstance(Locale.CHINA);        //输出格式化货币        System.out.println("Locale.CHINA:"+format.format(number));        format=NumberFormat.getCurrencyInstance(Locale.ENGLISH);        System.out.println("Locale.ENGLISH:"+format.format(number));        format=NumberFormat.getCurrencyInstance(Locale.TAIWAN);        System.out.println("Locale.TAIWAN:"+format.format(number));    }}

结果:

请输入一个数字:
60
Locale类的常量作为构造参数获得不同的货币格式:
Locale.CHINA:¥60.00
Locale.ENGLISH:¤60.00
Locale.TAIWAN:NT$60.00

原创粉丝点击