java 日期与时间

Java 的时间 API 是一个非常重要的主题,尤其是 Java 8 引入的 java.time 包,它为日期和时间处理提供了强大的功能。

我们可以按照以下几个主题逐步学习 Java 时间处理:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5fc40f19a1024d9fa79325da5705b5c6.png
在这里插入图片描述

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class DateFormatting {
    public static void main(String[] args) {
        // 当前日期、时间、日期时间
        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();
        LocalDateTime dateTime = LocalDateTime.now();

        // 定义格式化器
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 格式化
        String formattedDate = date.format(dateFormatter);
        String formattedTime = time.format(timeFormatter);
        String formattedDateTime = dateTime.format(dateTimeFormatter);

        System.out.println("格式化日期: " + formattedDate);
        System.out.println("格式化时间: " + formattedTime);
        System.out.println("格式化日期时间: " + formattedDateTime);
    }
}

在这里插入图片描述

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class DateParsing {
    public static void main(String[] args) {
        // 字符串
        String dateString = "2024-12-09";
        String timeString = "14:25:30";
        String dateTimeString = "2024-12-09 14:25:30";

        // 定义解析器(格式需与字符串匹配)
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 解析
        LocalDate parsedDate = LocalDate.parse(dateString, dateFormatter);
        LocalTime parsedTime = LocalTime.parse(timeString, timeFormatter);
        LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, dateTimeFormatter);

        System.out.println("解析日期: " + parsedDate);
        System.out.println("解析时间: " + parsedTime);
        System.out.println("解析日期时间: " + parsedDateTime);
    }
}

在这里插入图片描述

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class BuiltInFormatters {
    public static void main(String[] args) {
        // 当前日期时间
        LocalDateTime now = LocalDateTime.now();

        // 使用内置格式化器
        String isoDateTime = now.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
        System.out.println("ISO格式日期时间: " + isoDateTime);

        // 使用内置解析器
        LocalDateTime parsedDateTime = LocalDateTime.parse("2024-12-09T14:25:30", 
        	DateTimeFormatter.ISO_LOCAL_DATE_TIME);
        System.out.println("解析的日期时间: " + parsedDateTime);
    }
}

在这里插入图片描述
在这里插入图片描述

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;

public class DateTimeCalculation {
    public static void main(String[] args) {
        // 当前日期和时间
        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();
        LocalDateTime dateTime = LocalDateTime.now();

        // 日期加减
        LocalDate plusDays = date.plusDays(5); // 加5天
        LocalDate minusMonths = date.minusMonths(2); // 减2个月

        // 时间加减
        LocalTime plusHours = time.plusHours(3); // 加3小时
        LocalTime minusMinutes = time.minusMinutes(15); // 减15分钟

        // 日期时间加减
        LocalDateTime plusWeeks = dateTime.plusWeeks(1); // 加1周
        LocalDateTime minusYears = dateTime.minusYears(1); // 减1年

        System.out.println("当前日期: " + date);
        System.out.println("加5天: " + plusDays);
        System.out.println("减2个月: " + minusMonths);

        System.out.println("当前时间: " + time);
        System.out.println("加3小时: " + plusHours);
        System.out.println("减15分钟: " + minusMinutes);

        System.out.println("当前日期时间: " + dateTime);
        System.out.println("加1周: " + plusWeeks);
        System.out.println("减1年: " + minusYears);
    }
}

在这里插入图片描述
在这里插入图片描述

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Duration;
import java.time.Period;

public class IntervalCalculation {
    public static void main(String[] args) {
        // 日期间隔
        LocalDate startDate = LocalDate.of(2024, 12, 1);
        LocalDate endDate = LocalDate.of(2024, 12, 9);

        Period period = Period.between(startDate, endDate);
        System.out.println("日期间隔: " + period.getDays() + " 天");

        // 时间间隔
        LocalDateTime startTime = LocalDateTime.of(2024, 12, 9, 10, 0, 0);
        LocalDateTime endTime = LocalDateTime.of(2024, 12, 9, 14, 30, 0);

        Duration duration = Duration.between(startTime, endTime);
        System.out.println("时间间隔: " + duration.toHours() + " 小时 " + duration.toMinutesPart() + " 分钟");
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class InternationalDateFormatting {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();

        // 英文格式
        DateTimeFormatter formatterUS = DateTimeFormatter.ofPattern("EEEE, MMMM d, yyyy", Locale.US);
        System.out.println("美国格式: " + now.format(formatterUS));

        // 中文格式
        DateTimeFormatter formatterCN = DateTimeFormatter.ofPattern("yyyy年MM月dd日 EEEE", Locale.CHINA);
        System.out.println("中国格式: " + now.format(formatterCN));
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import java.time.LocalDate;

public class ActiveUserAnalysis {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate oneWeekAgo = today.minusDays(7);

        System.out.println("统计范围起始日期: " + oneWeekAgo);
        System.out.println("统计范围结束日期: " + today);
        
        // 示例 SQL 查询
        String sqlQuery = String.format("SELECT * FROM users WHERE last_active BETWEEN '%s' AND '%s';",
                                         oneWeekAgo, today);
        System.out.println("生成的 SQL 查询: " + sqlQuery);
    }
}

在这里插入图片描述

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateParsingAndFormatting {
    public static void main(String[] args) {
        String input = "20241209153000"; // 输入格式为 yyyyMMddHHmmss

        // 解析输入字符串
        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
        LocalDateTime dateTime = LocalDateTime.parse(input, inputFormatter);

        // 格式化为目标格式
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDate = dateTime.format(outputFormatter);

        System.out.println("原始字符串: " + input);
        System.out.println("解析后的时间: " + dateTime);
        System.out.println("格式化后的时间: " + formattedDate);
    }
}

在这里插入图片描述

import java.time.LocalDateTime;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class TimerExample {
    public static void main(String[] args) {
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

        // 开始时间
        LocalDateTime startTime = LocalDateTime.now();

        // 定时任务
        scheduler.scheduleAtFixedRate(() -> {
            LocalDateTime now = LocalDateTime.now();
            System.out.println("当前时间: " + now);

            // 检查是否运行满 1 分钟
            if (now.isAfter(startTime.plusMinutes(1))) {
                System.out.println("定时任务结束");
                scheduler.shutdown();
            }
        }, 0, 10, TimeUnit.SECONDS);
    }
}

在这里插入图片描述
在这里插入图片描述

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class DateTimeUtils {

    // 常用日期时间格式
    public static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DATE_FORMAT = "yyyy-MM-dd";
    public static final String TIME_FORMAT = "HH:mm:ss";

    private DateTimeUtils() {
        // 私有构造方法防止实例化
    }

    /**
     * 获取当前时间字符串
     * @return 当前时间,格式为 yyyy-MM-dd HH:mm:ss
     */
    public static String getCurrentTime() {
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(DEFAULT_FORMAT));
    }

    /**
     * 按指定格式获取当前时间字符串
     * @param format 日期格式
     * @return 当前时间
     */
    public static String getCurrentTime(String format) {
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(format));
    }

    /**
     * 解析字符串为 LocalDateTime
     * @param dateStr 日期字符串
     * @param format 日期格式
     * @return LocalDateTime 对象
     */
    public static LocalDateTime parse(String dateStr, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return LocalDateTime.parse(dateStr, formatter);
    }

    /**
     * 格式化 LocalDateTime 为字符串
     * @param dateTime LocalDateTime 对象
     * @param format 日期格式
     * @return 格式化后的字符串
     */
    public static String format(LocalDateTime dateTime, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return dateTime.format(formatter);
    }

    /**
     * 计算两个日期之间的天数
     * @param start 开始日期
     * @param end 结束日期
     * @return 天数
     */
    public static long daysBetween(LocalDate start, LocalDate end) {
        return Duration.between(start.atStartOfDay(), end.atStartOfDay()).toDays();
    }

    /**
     * 获取指定时间加上指定天数后的时间
     * @param dateTime 原时间
     * @param days 增加的天数
     * @return 新时间
     */
    public static LocalDateTime addDays(LocalDateTime dateTime, int days) {
        return dateTime.plusDays(days);
    }

    /**
     * 转换时间为目标时区
     * @param dateTime LocalDateTime 对象
     * @param sourceZoneId 源时区
     * @param targetZoneId 目标时区
     * @return 转换后的 ZonedDateTime
     */
    public static ZonedDateTime convertZone(LocalDateTime dateTime, String sourceZoneId, String targetZoneId) {
        ZoneId sourceZone = ZoneId.of(sourceZoneId);
        ZoneId targetZone = ZoneId.of(targetZoneId);
        ZonedDateTime zonedDateTime = dateTime.atZone(sourceZone);
        return zonedDateTime.withZoneSameInstant(targetZone);
    }

    /**
     * 获取当前时间戳(秒)
     * @return 时间戳
     */
    public static long getCurrentTimestamp() {
        return Instant.now().getEpochSecond();
    }

    /**
     * 将时间戳转换为 LocalDateTime
     * @param timestamp 时间戳(秒)
     * @return LocalDateTime 对象
     */
    public static LocalDateTime timestampToLocalDateTime(long timestamp) {
        return LocalDateTime.ofInstant(Instant.ofEpochSecond(timestamp), ZoneId.systemDefault());
    }
}

在这里插入图片描述

public class DateTimeUtilsTest {
    public static void main(String[] args) {
        // 获取当前时间
        System.out.println("当前时间: " + DateTimeUtils.getCurrentTime());

        // 自定义格式化当前时间
        System.out.println("当前时间(自定义格式): " + DateTimeUtils.getCurrentTime("yyyy/MM/dd HH:mm"));

        // 解析时间字符串
        String dateStr = "2024-12-09 10:30:00";
        LocalDateTime parsedTime = DateTimeUtils.parse(dateStr, "yyyy-MM-dd HH:mm:ss");
        System.out.println("解析时间: " + parsedTime);

        // 格式化 LocalDateTime
        String formattedTime = DateTimeUtils.format(parsedTime, "MM/dd/yyyy HH:mm");
        System.out.println("格式化时间: " + formattedTime);

        // 计算日期差
        LocalDate startDate = LocalDate.of(2024, 12, 1);
        LocalDate endDate = LocalDate.of(2024, 12, 9);
        System.out.println("日期差: " + DateTimeUtils.daysBetween(startDate, endDate) + " 天");

        // 时间加减
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime newTime = DateTimeUtils.addDays(now, 5);
        System.out.println("当前时间加 5 天: " + newTime);

        // 时区转换
        LocalDateTime utcNow = LocalDateTime.now(ZoneId.of("UTC"));
        ZonedDateTime nyTime = DateTimeUtils.convertZone(utcNow, "UTC", "America/New_York");
        System.out.println("UTC 转纽约时间: " + nyTime);

        // 获取当前时间戳
        long timestamp = DateTimeUtils.getCurrentTimestamp();
        System.out.println("当前时间戳: " + timestamp);

        // 时间戳转 LocalDateTime
        LocalDateTime fromTimestamp = DateTimeUtils.timestampToLocalDateTime(timestamp);
        System.out.println("时间戳转时间: " + fromTimestamp);
    }
}

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/933464.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(ICML-2024)DoRA:权重分解低秩自适应

DoRA:权重分解低秩自适应 Paper是英伟达发表在ICML 2024的工作 Paper Title:DoRA: Weight-Decomposed Low-Rank Adaptation Code: 地址 Abstract 在广泛使用的参数高效微调 (PEFT) 方法中,LoRA 及其变体因避免了额外的推理成本而…

想在iPad上远程操作安卓手机的APP,怎样实现iPad远程控制安卓?

学生党或互联网行业的打工人,人手连三台电子设备也很常见,手机、平板还有笔记本电脑一大堆,如果出门要全带上,背包压力也变大。 有没有想过用远程控制功能,让iPad远程控制安卓手机?这样做,出门就…

【JavaEE】UDP、TCP的API介绍

目录 UDP数据报套接字编程 DatagramSocket API DatagramPacket API 回显C/S示例 TIPS TCP ServerSocket API Socket API 回显C/S示例 UDP数据报套接字编程 DatagramSocket API socket是操作系统中的一种概念,本质上是一种特殊的文件,socket属于…

【专题】2024年11月新能源汽车、智能汽车行业报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p38520 随着科技的飞速发展与社会的持续变革,新能源汽车与智能汽车行业正步入全新的发展阶段,成为全球瞩目的焦点领域。本报告深入且全面地剖析了 2024 年 11 月该行业的多方面状况。从汽车消费市场来看&#…

mysql重置root密码(适用于5.7和8.0)

今天出一期重置mysql root密码的教程,适用于5.7和8.0,在网上搜索了很多的教程发现都没有效果,浪费了很多时间,尝试了多次之后发现这种方式是最稳妥的,那么废话不多说,往下看: 目录 第一步&…

AI智能体Prompt预设词指令大全+GPTs应用使用

AI智能体使用指南 直接复制在AI工具助手中使用(提问前) 可前往SparkAi系统用户官网进行直接使用 SparkAI系统介绍文档:Docs 常见AI智能体GPTs应用大全在线使用 自定义添加制作AI智能体进行使用: 文章润色器 你是一位具有敏锐洞察…

linux 系统常用指令

1、查看内核版本 uname -r 2、列出占用空间最大的 10 个文件或目录 du -ah / | sort -rh | head -n 10 终于找到我虚拟机硬盘空间越来越少的原因了,类目......

[C++]继承

继承 概念使用方法继承方式子类的构造与析构 继承的成员继承成员在子类对象里的存放顺序成员变量普通成员变量静态成员变量 成员函数普通成员函数重定义(隐藏) 静态成员函数友元函数 单继承与多继承概念赋值转换(切片)多继承带来的…

MetaGPT 安装

1. 创建环境 conda create -n metagpt python3.10 && conda activate metagpt2. 可编辑方式安装 git clone --depth 1 https://github.com/geekan/MetaGPT.git cd MetaGPT pip install -e .3. 配置 metagpt --init-config运行命令,在C盘位置C:\Users\325…

ros项目dual_arm_pick-place(urdf文件可视化查看)

前言 一直想写一些项目的讲解,今天(2024.12.05)可以说正式开始了。 dual_arm_pick-place项目,是关于两个机械臂协同传递物品。 正文 这次的话,给大家讲一下里面的urdf文件。 这篇文章主要来看一下项目中的urdf文件…

如何在 IntelliJ IDEA 中为 Spring Boot 应用实现热部署

文章目录 1. 引言2. 准备工作3. 添加必要的依赖4. 配置 IntelliJ IDEA4.1 启用自动编译4.2 开启热部署策略 5. 测试热部署6. 高级技巧7. 注意事项8. 总结 随着现代开发工具的进步,开发者们越来越重视提高生产力的特性。对于 Java 开发者来说,能够在不重启…

工业-实时数据采集

1.编写新的 Flume 配置文件,将数据备份到 HDFS 目录 /user/test/flumebackup 下,要求所有主题 的数据使用同一个 Flume配置文件完成。 1. 配置概览 Flume 的主要任务是从多个来源(如日志文件)读取数据,经过处理后通过接收器(Sink)存储到目标系统(如 HDFS)。在此配置…

springSecurity认证流程

Spring Security 是spring家族中的一个安全管理框架。相比于另一个安全框架Shiro,它提供更丰富的功能和社区资源,但也较难上手。所以一般大项目用spring Security,小项目用Shiro。 一般web应用需要认证和授权,这也是spring Secur…

LinuxUDP编程

由于UDP是无连接、尽力传输的,所以Server端绑定完IP、端口号后,使用recvfrom可以阻塞等待客户端的数据,而且Client端通过sendto发送的数据包直接发送到互联网(也是基于IP、端口号)这种操作是不担保Server端是否收到的&…

Nginx基本介绍及conf文件的作用

文章目录 前言一、Nginx基本介绍1.1 what is Nginx ?1.2 Nginx中的三个概念1.3 nginx安装1.4 运行nginx 二、nginx配置文件conf2.1 conf文件组成部分2.1.1 全局块2.1.2 events块2.1.3 http块 三、其他概念3.1 nginx惊群3.2 负载均衡 总结 前言 本文将介绍nginx的基…

Docker打包SpringBoot项目

一、项目打成jar包 在进行docker打包之前,先确定一下,项目能够正常的打成JAR包,并且启动之后能够正常的访问。这一步看似是可有可无,但是能避免后期的一些无厘头问题。 二、Dockerfile 项目打包成功之后,需要编写Doc…

GitLab基础环境部署:Ubuntu 22.04.5系统在线安装GitLab 17.5.2实操手册

文章目录 GitLab基础环境部署:Ubuntu 22.04.5系统在线安装GitLab 17.5.2实操手册一、环境准备1.1 机器规划1.2 环境配置1.2.1 设置主机名1.2.2 停止和禁用防火墙1.2.3 更新系统 二、GitLab安装配置2.1 安装GitLab所需的依赖包2.2 添加GitLab存储库2.2.1 将GitLab存储…

【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解

前言 🌟🌟本期讲解关于HTMLCSSJavaScript的基础知识,小编带领大家简单过一遍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 …

6. 一分钟读懂“抽象工厂模式”

6.1 模式介绍 书接上文,工厂方法模式只能搞定单一产品族,遇到需要生产多个产品族时就歇菜了。于是,在需求的“花式鞭策”下,程序员们再次绷紧脑细胞,创造出了更强大的抽象工厂模式,让工厂一次性打包多个产品…

数仓技术hive与oracle对比(五)

附录说明 附录是对测试过程中涉及到的一些操作进行记录和解析。 oracle清除缓存 alter system flush shared_pool; 将使library cache和data dictionary cache以前保存的sql执行计划全部清空,但不会清空共享sql区或者共享pl/sql区里面缓存的最近被执行的条目。刷…