日期和时间字符串格式化
在程序界面中经常需要显示时间和日期,但是其显示的 格式经常不尽人意,需要编写大量的代码经过各种算法才得到理想的日期与时间格式。字符串格式中还有%tx转换符没有详细介绍,它是专门用来格式化日期和时 间的。%tx转换符中的x代表另外的处理日期和时间格式的转换符,它们的组合能够将日期和时间格式化成多种格式。
1.常见日期时间格式化
格式化日期与时间的转换符定义了各种格式化日期字符串的方式,其中最常用的日期和时间的组合格式如表7.3所示。
表7.3 常见日期和时间组合的格式
转 换 符 |
说 明 |
示 例 |
c |
包括全部日期和时间信息 |
星期六 十月 27 14:21:20 CST 2007 |
F |
“年-月-日”格式 |
2007-10-27 |
D |
“月/日/年”格式 |
10/27/07 |
r |
“HH:MM:SS PM”格式(12时制) |
02:25:51 下午 |
T |
“HH:MM:SS”格式(24时制) |
14:28:16 |
R |
“HH:MM”格式(24时制) |
14:28 |
ch0707实例位置:mr/07/sl/07
下面的实例使用表7.3中的转换符格式化当前日期和时间,并通过System.out.printf()方法输出到控制台中。实现步骤如下。
(1)创建StrDateTime类,将下面这段代码复制到类定义中。
例程08 代码位置:光盘/mr/07/sl/07/src/com/lzw/StrDateTime.java
public static void main(String[] args) {
Date date=new Date(); // 创建日期对象
System.out.printf("全部日期和时间信息:%tc%n",date); // 格式化输出日期或时间
System.out.printf("年-月-日格式:%tF%n",date);
System.out.printf("月/日/年格式:%tD%n",date);
System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);
System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);
System.out.printf("HH:MM格式(24时制):%tR",date);
}
(2)运行该实例,将在控制台输出本地时间格式的当前日期和时间。运行结果如下:
全部日期和时间信息:星期日十月28 13:53:24 CST 2007
年-月-日格式:2007-10-28
月/日/年格式:10/28/07
HH:MM:SS PM格式(12时制):01:53:24 下午
HH:MM:SS格式(24时制):13:53:24
HH:MM格式(24时制):13:53
2.格式化日期字符串
定义日期格式的转换符可以使日期通过指定的转换符生成新字符串。这些日期转换符如表7.4所示。
表7.4 日期格式化转换符
转 换 符 |
说 明 |
示 例 |
b或者h |
月份简称 |
中:十月 英:Oct |
B |
月份全称 |
中:十月 英:October |
a |
星期的简称 |
中:星期六 英:Sat |
A |
星期的全称 |
中:星期六 英:Saturday |
C |
年的前两位数字(不足两位前面补0) |
20 |
y |
年的后两位数字(不足两位前面补0) |
07 |
Y |
4位数字的年份(不足4位前面补0) |
2007 |
j |
一年中的天数(即年的第几天) |
300 |
m |
两位数字的月份(不足两位前面补0) |
10 |
d |
两位数字的日(不足两位前面补0) |
27 |
e |
月份的日(前面不补0) |
5 |
ch0708实例位置:mr/07/sl/08
下面的实例将使用各种转换符格式化当前系统的日期,并通过System.out.printf()方法输出到控制台中。实现步骤如下。
(1)创建StrDate类,将下面这段代码复制到类定义中。
例程09 代码位置:光盘/mr/07/sl/08/src/com/lzw/StrDate.java
public static void main(String[] args) {
Date date=new Date(); // 创建日期对象
String str=String.format(Locale.US,"英文月份简称:%tb",date); // 格式化日期字符串
System.out.println(str); // 输出字符串内容
System.out.printf("本地月份简称:%tb%n",date);
str=String.format(Locale.US,"英文月份全称:%tB",date);
System.out.println(str);
System.out.printf("本地月份全称:%tB%n",date);
str=String.format(Locale.US,"英文星期的简称:%ta",date);
System.out.println(str);
System.out.printf("本地星期的简称:%tA%n",date);
System.out.printf("年的前两位数字(不足两位前面补0):%tC%n",date);
System.out.printf("年的后两位数字(不足两位前面补0):%ty%n",date);
System.out.printf("一年中的天数(即年的第几天):%tj%n",date);
System.out.printf("两位数字的月份(不足两位前面补0):%tm%n",date);
System.out.printf("两位数字的日(不足两位前面补0):%td%n",date);
System.out.printf("月份的日(前面不补0):%te",date);
}
(2)运行本实例,将在控制台输出各种日期格式化的字符串。运行结果如下:
英文月份简称:Oct
本地月份简称:十月
英文月份全称:October
本地月份全称:十月
英文星期的简称:Sun
本地星期的简称:星期日
年的前两位数字(不足两位前面补0):20
年的后两位数字(不足两位前面补0):07
一年中的天数(即年的第几天):301
两位数字的月份(不足两位前面补0):10
两位数字的日(不足两位前面补0):28
月份的日(前面不补0):28
3.格式化时间字符串
和日期格式转换符相比,时间格式的转换符要更多、更精确。它可以将时间格式化成时、分、秒甚至时毫秒等单位。格式化时间字符串的转换符如表7.5所示。
表7.5 时间格式化转换符
转 换 符 |
说 明 |
示 例 |
H |
2位数字24时制的小时(不足2位前面补0) |
15 |
I |
2位数字12时制的小时(不足2位前面补0) |
03 |
k |
2位数字24时制的小时(前面不补0) |
15 |
l |
2位数字12时制的小时(前面不补0) |
3 |
M |
2位数字的分钟(不足2位前面补0) |
03 |
S |
2位数字的秒(不足2位前面补0) |
09 |
L |
3位数字的毫秒(不足3位前面补0) |
015 |
N |
9位数字的毫秒数(不足9位前面补0) |
562000000 |
p |
小写字母的上午或下午标记 |
中:下午 英:pm |
z |
相对于GMT的RFC822时区的偏移量 |
+0800 |
Z |
时区缩写字符串 |
CST |
续表
转 换 符 |
说 明 |
示 例 |
s |
1970-1-1 00:00:00 到现在所经过的秒数 |
1193468128 |
Q |
1970-1-1 00:00:00 到现在所经过的毫秒数 |
1193468128984 |
ch0709实例位置:mr/07/sl/09
下面通过实例使用各种转换符格式化当前系统的时间,并通过System.out.printf()方法输出到控制台中。实现步骤如下。
(1)创建StrTime类,将下面这段代码复制到类定义中。
例程10 代码位置:光盘/mr/07/sl/08/src/com/lzw/StrTime.java
public static void main(String[] args) {
Date date=new Date(); // 创建日期对象
System.out.printf("2位数字24时制的小时(不足2位前面补0):%tH%n",date);
System.out.printf("2位数字12时制的小时(不足2位前面补0):%tI%n",date);
System.out.printf("2位数字24时制的小时(前面不补0):%tk%n",date);
System.out.printf("2位数字12时制的小时(前面不补0):%tl%n",date);
System.out.printf("2位数字的分钟(不足2位前面补0):%tM%n",date);
System.out.printf("2位数字的秒(不足2位前面补0):%tS%n",date);
System.out.printf("3位数字的毫秒(不足3位前面补0):%tL%n",date);
System.out.printf("9位数字的毫秒数(不足9位前面补0):%tN%n",date);
String str=String.format(Locale.US,"小写字母的上午或下午标记(英):%tp",date);
System.out.println(str); // 输出字符串变量str的内容
System.out.printf ("小写字母的上午或下午标记(中):%tp%n",date);
System.out.printf("相对于GMT的RFC822时区的偏移量:%tz%n",date);
System.out.printf("时区缩写字符串:%tZ%n",date);
System.out.printf("1970-1-1 00:00:00 到现在所经过的秒数:%ts%n",date);
System.out.printf("1970-1-1 00:00:00 到现在所经过的毫秒数:%tQ%n",date);
}
(2)运行实例,在控制台将输出以下信息:
2位数字24时制的小时(不足2位前面补0):15
2位数字12时制的小时(不足2位前面补0):03
2位数字24时制的小时(前面不补0):15
2位数字12时制的小时(前面不补0):3
2位数字的分钟(不足2位前面补0):24
2位数字的秒(不足2位前面补0):56
3位数字的毫秒(不足3位前面补0):828
9位数字的毫秒数(不足9位前面补0):828000000
小写字母的上午或下午标记(英):pm
小写字母的上午或下午标记(中):下午
相对于GMT的RFC822时区的偏移量:+0800
时区缩写字符串:CST
1970-1-1 00:00:00到现在所经过的秒数:1193556296
1970-1-1 00:00:00到现在所经过的毫秒数:1193556296828
相关推荐
本项目提供的`std::string format`函数是作者自定义的一个实现,它提供了一种方便的方式来格式化`std::string`对象,使得代码更清晰易读。源代码主要分布在`str.hpp`和`string_format.cpp`这两个文件中。 在`str....
### String.Format 数字格式化输出 在C#中,`String.Format`方法是进行字符串格式化的一种非常实用的方式。它允许我们对数字、日期、时间等数据类型进行精确的格式控制,使得输出更加符合需求或者易于阅读。本文将...
在实际应用中,我们常常需要展示包含日期的数据,这就涉及到日期的格式化问题。本文将详细探讨如何在 Bootstrap Table 中对日期进行格式化,同时考虑到后端数据来源是 MySQL 数据库,并且使用 Spring MyBatis 作为...
在网络安全领域,字符串格式化漏洞(Format String Vulnerability)是一种常见的安全问题,它通常发生在程序处理格式化字符串时未能正确验证用户输入的情况下。此类漏洞可能导致信息泄露或任意代码执行等严重后果。...
在实际开发中,比如在生成动态消息、格式化日期和时间、或者构建复杂的模板时,`format`方法可以大大提高代码的可维护性和可读性。 在“string-format-master”文件夹中,可能包含项目的源代码、示例、文档以及测试...
### C#中的String.Format方法与数字格式化 在C#编程语言中,`String.Format`是一种非常实用且灵活的方法,用于格式化字符串输出。通过该方法可以方便地控制数字、日期时间等数据类型的显示格式,这在实际开发过程中...
### Java字符串格式化String.format()详解 #### 一、引言 `String.format()` 方法是JDK 1.5引入的新特性,它提供了一种灵活且强大的方式来格式化字符串。这种方法类似于C语言中的`printf`函数,允许开发者通过指定...
在Perl中,`printf`函数家族是用于格式化输出的重要工具,类似于C语言中的`printf`。然而,如同任何其他软件,Perl的`printf`函数也可能存在安全漏洞,其中一种常见的是格式字符串错误(Format String Bugs)。这个...
在C#编程语言中,`String.Format`方法是一种强大的字符串格式化工具,它允许开发者以预定义的格式输出各种类型的数据,特别是在处理数字时。通过使用特定的格式化字符串,可以控制数字的显示方式,包括小数点后的...
string.Format 格式化时间,货币
- **不安全使用**:如果用户输入的字符串被用作格式化字符串,而未进行适当验证,攻击者可以注入额外的`%`指令,如`printf("%s", user_input)`,用户_input可能包含`%x`来读取内存地址或`%n`来修改变量的值。...
本文介绍了Python中几种常用的字符串格式化方法:`%`操作符、`.format()`方法以及f-string。每种方法都有其适用场景,选择哪种方法取决于具体的需求和个人偏好。对于新项目或升级后的项目,建议使用`.format()`方法...
这个`format()`函数可以接受一个格式字符串作为参数,然后返回按照该格式格式化的日期时间字符串。函数的关键逻辑如下: - 定义了一个对象`o`,用于存储日期的各种组成部分,例如月份、日期、小时等。 - 使用正则...
通过以上介绍可以看出,`string.Format`在.NET框架中的强大功能,不仅能够处理基本的数字格式化,还能灵活应对复杂的日期时间格式化需求。正确使用`string.Format`能够极大提升代码的可读性和维护性,是每一个.NET...
Java 字符串日期数字格式化输出 Java 中的字符串日期数字格式化输出是一种常见的操作,特别是在数据输出和显示时。 Java 提供了多种方式来实现格式化输出,包括使用 NumberFormat、DecimalFormat 和 ...
使用 string.Format 方法对日期进行格式化,例如,string.Format("{0:d}", System.DateTime.Now) 将结果格式化为 2009-3-20。不同的格式化符号可以生成不同的日期格式,例如,string.Format("{0:D}", System....
这个格式被广泛应用于汽车电子、工业自动化和其他领域,它允许工程师和开发者描述CAN总线上的数据流,包括信号的解析、转换和可视化。 ### 1. DBC文件的基本结构 DBC文件通常包含以下几个部分: - **头信息**:...
C#String.Format数字格式化输出;有比较详细的讲解。希望对大家有用。