当前位置:网站首页>LocalDateTime的详细使用方法
LocalDateTime的详细使用方法
2022-08-04 21:40:00 【m0_67595943】
有时候,我们需要日期的计算,比如在当前日期的基础上移动X天是什么时候,或者在指定的某一天的基础上移动X天是什么时候,等等。。
public static void main(String[] args) {
DateDemo.nowDateMove(3);
DateDemo.unKnownDateMove(2016,12,12,6);
}
public static void nowDateMove(int num) {
//获取当前日期
LocalDate ld = LocalDate.now();
//要移动的天数num,可以是整数或者负数
LocalDate ll = ld.plusDays(num);
System.out.println("今天是: " + ld + "------再过" + num + "天是:" + ll);
}
public static void unKnownDateMove(int year, int month, int day, int num) {
//指定日期
LocalDate ld = LocalDate.of(year, month, day);
//要移动的天数num,可以是整数或者负数
LocalDate ll = ld.plusDays(num);
System.out.println("指定日期是: " + ld + "------再过" + num + "天是:" + ll);
}
输出结果
今天是: 2018-12-22------再过3天是:2018-12-25
指定日期是: 2016-12-12------再过6天是:2016-12-18
之前我也碰到过类似的问题,但是的解决方案是,感觉还是LocalDate简单
1、在当前基础上后退
public class DateMoveUtil {
/**
* 日期计算 在当前日期的基础上,推后num天
* @param num
* @return
*/
public String dateFun(int num) {
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
//推后一定天数
calendar.add(Calendar.DATE,num);
//返回一个Date对象,表示此Calendar的时间值
date = calendar.getTime();
String dateTime = format.format(date);
return dateTime;
}
}
2、在某一日期之后后退
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(“2018-10-10”);
Date date1 = new Date(date.getTime() + 7 * 24 * 60 * 60 * 1000L);
String time = format.format(date1);
仅供参考,如果大家有好的方法,虚心请教。
(一) LocalDate与LocalDateTime初始化日期,对日期加减。
public static void main(String[] args){
//获取当前时间(年月日)
LocalDate localDate=LocalDate.now();
//格式化日期(DateTimeFormatter是线程安全的,用于localData的时间格式化)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date= LocalDate.parse(localDate.toString(), formatter); //2022-05-23
//增加一年
LocalDate nextYear = date.plusYears(1); //2023-05-23
//减少一年
LocalDate lastYear = date.minusYears(1); //2021-05-23
//增加一个月
LocalDate nextMonths= date.plusMonths(1); //2021-06-23
//增加一天
LocalDate nextDays= date.plusDays(1); //2021-05-24
//构造指定的年月日
LocalDate specifiedDate = LocalDate.of(2022, 5, 23);
//年
int year = specifiedDate.getYear(); //2022
//月(这里用到了ChronoField类,有兴趣的可以去了解一下)
int month1 = specifiedDate.get(ChronoField.MONTH_OF_YEAR); //5
//日
int day = specifiedDate.getDayOfMonth(); //23
//创建LocalTime,只会获取几时几分几秒
LocalTime localTime = LocalTime.now();
//创建LocalDateTime,获取年月日时分秒,等于LocalDate+LocalTime
LocalDateTime localDateTime = LocalDateTime.now();
}
(二)Duration 或 ChronoUnit 计算两个时间的间隔
Duration 类计算时间间隔
LocalDateTime time = LocalDateTime.parse("2022-06-28T08:41:00");
LocalDateTime time1 = LocalDateTime.parse("2022-06-28T08:42:00");
Duration duration = Duration.between(time, time1);
// 相差天数
long datys = duration.toDays();
// 相差小时
long hours = duration.toHours();
// 相差分钟
long minutes = duration.toMinutes();
// 相差秒数
long seconds = duration.getSeconds();
// 相差毫秒
long millis = duration.toMillis();
// 相差纳秒
long nanos = duration.toNanos();
ChronoUnit 类计算时间间隔
LocalDateTime time = LocalDateTime.parse("2022-06-28T08:41:00");
LocalDateTime time1 = LocalDateTime.parse("2022-06-28T08:42:00");
//相差月
long cuMonths = ChronoUnit.MONTHS.between(time, time1);
//相差天数
long cuDatys = ChronoUnit.DAYS.between(time, time1);
//相差小时
long cuHours = ChronoUnit.HOURS.between(time, time1);
//相差分钟
long cuMinutes = ChronoUnit.MINUTES.between(time, time1);
//相差秒
long cuSeconds = ChronoUnit.SECONDS.between(time, time1);
public static void main(String[] args) {
DateDemo.nowDateMove(3);
DateDemo.unKnownDateMove(2016,12,12,6);
}
public static void nowDateMove(int num) {
//获取当前日期
LocalDate ld = LocalDate.now();
//要移动的天数num,可以是整数或者负数
LocalDate ll = ld.plusDays(num);
System.out.println("今天是: " + ld + "------再过" + num + "天是:" + ll);
}
public static void unKnownDateMove(int year, int month, int day, int num) {
//指定日期
LocalDate ld = LocalDate.of(year, month, day);
//要移动的天数num,可以是整数或者负数
LocalDate ll = ld.plusDays(num);
System.out.println("指定日期是: " + ld + "------再过" + num + "天是:" + ll);
}
今天是: 2018-12-22------再过3天是:2018-12-25
指定日期是: 2016-12-12------再过6天是:2016-12-18
1、在当前基础上后退
public class DateMoveUtil {
/**
* 日期计算 在当前日期的基础上,推后num天
* @param num
* @return
*/
public String dateFun(int num) {
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
//推后一定天数
calendar.add(Calendar.DATE,num);
//返回一个Date对象,表示此Calendar的时间值
date = calendar.getTime();
String dateTime = format.format(date);
return dateTime;
}
}
2、在某一日期之后后退
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(“2018-10-10”);
Date date1 = new Date(date.getTime() + 7 * 24 * 60 * 60 * 1000L);
String time = format.format(date1);
边栏推荐
- Why is MySQL query slow?
- Altium Designer 19.1.18 - 保护锁定的对象
- 1319_STM32F103串口BootLoader移植
- Dotnet using WMI software acquisition system installation
- Re24:读论文 IOT-Match Explainable Legal Case Matching via Inverse Optimal Transport-based Rationale Ext
- laravel whereDoesntHave
- unity2D横版游戏教程9-对话框dialog
- ue unreal 虚幻 高分辨率无缩放 编辑器字太小 调整编辑器整体缩放
- mysql基础
- Excel商业智能-Power BI电商数据分析实战
猜你喜欢
【线性代数02】AX=b的2种解释和矩阵乘法的5种视角
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd6 in position 120: invalid continuation byte
强网杯2022——WEB
docker 部署redis集群
【QT】回调函数的实现
Hands-on Deep Learning_NiN
SPSS-System Clustering Hand Calculation Practice
数电快速入门(四)(组合逻辑电路的分析以及设计的介绍)
Win11如何开启Telnet客户端?
unity2D横版游戏教程8-音效
随机推荐
In which industries is the PMP certificate useful?
1319_STM32F103串口BootLoader移植
PyTorch Geometric (PyG) 安装教程
【分布式】分布式ID生成策略
PRIMAL: Pathfinding via Reinforcement and Imitation Multi-Agent Learning 代码解析
如何根据“前序遍历,中序遍历”,“中序遍历,后序遍历”构建按二叉树
openresty lua-resty-template页面静态化
打卡第 1 天:正则表达式学习总结
中大型商业银行堡垒机升级改造方案!必看!
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd6 in position 120: invalid continuation byte
PowerCLi batch configuration of NTP
27. Dimensionality reduction
Altium Designer 19.1.18 - Protecting Locked Objects
Some problems with passing parameters of meta and params in routing (can be passed but not passed, empty, collocation, click to pass multiple parameters to report an error)
数电快速入门(二)(复合逻辑运算和逻辑代数的基本定律的介绍)
Altium Designer 19.1.18 - draw polygons copper hollow out, for the cursor just capture solutions
Named routes, the role of name in components
Data warehouse (1) What is data warehouse and what are the characteristics of data warehouse
【CC3200AI 实验教程 1】疯壳·AI语音人脸识别(会议记录仪/人脸打卡机)-开发环境搭建
com.jacob.com.ComFailException: Invoke of: ActiveDocument