JDK7 时间
全世界的时间, 有一个统一的计算标准.
格林尼治时间/格林威治时间 (Greenwich Mean Time) 简称 GMT. 计算核心: 地球自转一天是 24 小时, 太阳直射时为正午 12 点. 后来发现计算误差较大, 现在格林威治时间已经不再作为标准时间来使用了.
到了 2012 年 1 月, 取消了用了将近 130 年的回归制标准时间. 现在, 标准时间是由原子钟来提供的.
原子钟: 利用铯原子的震动的频率计算出来的时间, 作为世界标准时间 (UTC)
铯原子每振动 9,192,631,770 次等于 1 秒钟. 这种计算方式是非常精准的, 2000 万年的误差为 1 秒钟.
中国位于东八区, 要在世界标准时间的基础上加 8 小时.
Date 类
Date 类是一个 JDK 写好的 Javabean 类, 用来描述时间, 精确到毫秒.
利用空参构造创建的对象, 默认表示操作系统当前时间.
利用有参构造创建的对象, 表示指定的时间.
程序示例:
import java.util.Date;
public class demo1 {
public static void main(String[] args) {
/*
public Date() 创建Date对象, 表示当前时间
public Date(long date) 创建Date对象, 表示指定时间
public void settime(long time) 设置/修改毫秒值
public long gettime() 获取时间对象的毫秒值
*/
// 1.创建对象表示一个时间
Date d1 = new Date();
System.out.println(d1);
// 2.创建对象表示一个指定的时间
Date d2 = new Date(0L); // 从时间原点开始, 过了 0 毫秒的那个时间
System.out.println(d2);
// 3.settime 修改时间
// 1000毫秒=1秒
d2.setTime(1000L);
System.out.println(d2);
// 4.getTime获取当前时间的毫秒值
long time = d2.getTime();
System.out.println(time);
}
}
程序示例:
import java.util.Date;
import java.util.Random;
public class demo2 {
public static void main(String[] args) {
/*
需求1:打印时间原点开始一年之后的时间
需求2:定义任意两个Date对象, 比较一下哪个时间在前, 哪个时间在后
*/
// 需求2:定义任意两个Date对象, 比较一下哪个时间在前, 哪个时间在后
Random r = new Random();
// 创建两个时间对象
Date d1 = new Date(Math.abs(r.nextInt()));
Date d2 = new Date(Math.abs(r.nextInt()));
long time1 = d1.getTime();
long time2 = d2.getTime();
if (time1 > time2) {
System.out.println("第一个时间在后面, 第二个时间在前面");
} else if (time1 < time2) {
System.out.println("第二个时间在后面, 第一个时间在前面");
} else {
System.out.println("表示两个时间一样");
}
}
private static void method() {
// 需求1:打印时间原点开始一年之后的时间
// 1.创建一个对象, 表示时间原点
Date d1 = new Date(0L);
// 2.获取d1时间的毫秒值
long time = d1.getTime();
// 3.在这个基础上我们要加一年的毫秒值即可
time = time + 1000L * 60 * 60 * 24 * 365;
// 4.把计算之后的时间毫秒值, 再设置回d1当中
d1.setTime(time);
// 5.打印d1
System.out.println(d1);
}
}
SimpleDateFormat 类
Date 类只能按照固定的格式打印时间, 而这个格式不符合一般的阅读习惯.
SimpleDateFormat 类的作用:
-
格式化: 把时间变成我们喜欢的格式.
-
解析: 把字符串表示的时间变成 Date 对象.
程序示例:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class demo3 {
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); // Sat Nov 11 11:11:11 CST 2023
System.out.println(date.getTime()); // 1699672271000
System.out.println("--------------------------------------------------------");
method1();
System.out.println("--------------------------------------------------------");
}
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日 时:分:秒 星期
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EE");
String str3 = sdf3.format(d1);
System.out.println(str3); // 1970年01月01日 08:00:00 周四
}
}
程序示例:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class demo4 {
public static void main(String[] args) throws ParseException {
/*
* 假设, 你初恋的出生年月日为: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); // 2000年11月11日
}
}
程序示例:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class demo5 {
public static void main(String[] args) throws ParseException {
/*
* 需求:
* 秒杀活动开始时间: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("参加秒杀活动失败");
}
}
}
标签:11,SimpleDateFormat,println,时间,Date,public
From: https://www.cnblogs.com/Chengkai730/p/18550542