Java常用api-SimpleDateFormat类

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: SimpleDateFormat类

第二章 SimpleDateFormat类

java.text.SimpleDateFormat 是日期/时间格式化类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

  • 格式化:按照指定的格式,把Date对象转换为String对象。
  • 解析:按照指定的格式,把String对象转换为Date对象。

2.1 构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:

  • public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。参数pattern是一个字符串,代表日期时间的自定义格式。

2.2 格式规则

常用的格式规则为:

标识字母(区分大小写) 含义
y
M
d
H
m
s

备注:更详细的格式规则,可以参考SimpleDateFormat类的API文档。

2.3 常用方法

DateFormat类的常用方法有:

  • public String format(Date date):将Date对象格式化为字符串。
  • public Date parse(String source):将字符串解析为Date对象。

package com.itheima.a01jdk7datedemo;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class A03_SimpleDateFormatDemo1 {

   public static void main(String[] args) throws ParseException {

       /*

           public simpleDateFormat() 默认格式

           public simpleDateFormat(String pattern) 指定格式

           public final string format(Date date) 格式化(日期对象 ->字符串)

           public Date parse(string source) 解析(字符串 ->日期对象)

       */

       //1.定义一个字符串表示时间

       String str = "2023-11-11 11:11:11";

       //2.利用空参构造创建simpleDateFormat对象

       // 细节:

       //创建对象的格式要跟字符串的格式完全一致

       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

       Date date = sdf.parse(str);

       //3.打印结果

       System.out.println(date.getTime());//1699672271000

   }

   private static void method1() {

       //1.利用空参构造创建simpleDateFormat对象,默认格式

       SimpleDateFormat sdf1 = new SimpleDateFormat();

       Date d1 = new Date(0L);

       String str1 = sdf1.format(d1);

       System.out.println(str1);//1970/1/1 上午8:00

       //2.利用带参构造创建simpleDateFormat对象,指定格式

       SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");

       String str2 = sdf2.format(d1);

       System.out.println(str2);//1970年01月01日 08:00:00

       //课堂练习:yyyy年MM月dd日 时:分:秒 星期

   }

}

小结:DateFormat可以将Date对象和字符串相互转换。

2.4 练习1(初恋女友的出生日期)

/*

    假设,你初恋的出生年月日为:2000-11-11

    请用字符串表示这个数据,并将其转换为:2000年11月11日

    创建一个Date对象表示2000年11月11日

    创建一个SimpleDateFormat对象,并定义格式为年月日把时间变成:2000年11月11日

*/

//1.可以通过2000-11-11进行解析,解析成一个Date对象

String str = "2000-11-11";

//2.解析

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");

Date date = sdf1.parse(str);

//3.格式化

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");

String result = sdf2.format(date);

System.out.println(result);

2.5 练习2(秒杀活动)

/* 需求:

           秒杀活动开始时间:2023年11月11日 0:0:0(毫秒值)

           秒杀活动结束时间:2023年11月11日 0:10:0(毫秒值)

           小贾下单并付款的时间为:2023年11月11日 0:01:0

           小皮下单并付款的时间为:2023年11月11日 0:11:0

           用代码说明这两位同学有没有参加上秒杀活动?

        */

//1.定义字符串表示三个时间

String startstr = "2023年11月11日 0:0:0";

String endstr = "2023年11月11日 0:10:0";

String orderstr = "2023年11月11日 0:01:00";

//2.解析上面的三个时间,得到Date对象

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");

Date startDate = sdf.parse(startstr);

Date endDate = sdf.parse(endstr);

Date orderDate = sdf.parse(orderstr);

//3.得到三个时间的毫秒值

long startTime = startDate.getTime();

long endTime = endDate.getTime();

long orderTime = orderDate.getTime();

//4.判断

if (orderTime >= startTime && orderTime <= endTime) {

   System.out.println("参加秒杀活动成功");

} else {

   System.out.println("参加秒杀活动失败");

}


相关文章
|
15天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
45 2
|
9天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
26天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
44 17
|
18天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
22天前
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
53 4
|
22天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
76 4
|
23天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
44 2
|
27天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
1月前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
1月前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。