【Java高级特性】java学习之旅32-日期日历类

PD虚拟机网络初始化失败的权限修复指南 本文针对Parallels Desktop虚拟机常见的“网络初始化失败”问题,提供了详细的权限修复指南。通过分析问题根源,指导用户安全备份并修改关键的`network.desktop.xml`和`dispatcher.desktop.xml`配置文件,以恢复PD虚拟机的网络连接。文章还包含了修复后的验证步骤及预防措施,帮助用户彻底解决并避免此类权限问题。 阅读详情

Date日期类

表示瞬时的时间,就是时间的偏移量

几个通用的时间

  1. CST: 中国标准时间
  2. UTC: 协调世界时
  3. GMT: 世界时(格林威治时间)

java中时间的起点:1970-1-1 0:0:0:000

常用的方法:

  1. 获取当前的时间
Date date = new Date();
  1. 获取当前时间的偏移量(时间起点至今的毫秒值)
long time = date.getTime();
  1. 通过时间偏移量创建date对象
Date date = new Date(Long.MAX_VALUE);
  1. 其他方法
date.after(date2); //前者在后者之后返回boolean
date.before(date2); //前者在后者之前返回boolean
date.compare(date2); //返回int 若为正数则前者大,以此类推

Calendar 日历类

  1. 是一个抽象类,有一个实现类GregorianCalendar
  2. 通过Calandar.getInstance()获取单例对象

和时间相关的常量

YEAR  年份
MONTH 月份 实际的月份-1
DATE 日期
HOUR 小时
MINUTE 分钟
SECOND 秒
MILLISECOND 毫秒
DAY_OF_WEEK 在一个星期中的周几(日到六 1-7)
DAY_OF_MONTH 在一个月中的日期

常用的方法

  1. 返回指定日历的字段值
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.YEAR));//2019
  1. 修改指定字段的值
calendar.add(Calendar.YEAR, -1);//2018(-1 表示减去一年)
  1. 设置指定字段的值
calendar.set(Calendar.YEAR, 2022);//2022
  1. 日期类和Calendar类之间的相互转化
Date date = calendar.getTime();

Date date2 = new Date();

calendar.setTime(date2);
作业:输入月份年份打印日历:
public class Work01 {
	
	private static Scanner input = new Scanner(System.in);

	public static void main(String[] args) {
		
		System.out.println("请输入年份:");
		int year = input.nextInt();
		System.out.println("请输入月份:");
		int month = input.nextInt();
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(year, month - 1, 1);
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
		int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
		
		calendar.add(Calendar.MONTH, 1);
		int nextMonthDayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
		int days = nextMonthDayOfYear - dayOfYear;
		days = days < 0 ? 31 : days;
		
//		System.out.println(dayOfWeek);
//		System.out.println(days);
		
		System.out.println("一\t二\t三\t四\t五\t六\t日");
		for (int j = 0; j < (dayOfWeek == 1 ? 6 : dayOfWeek - 2); j++) {
			System.out.print("\t");
		}
		for (int i = 1; i <= days; i++) {
			System.out.print(i + "\t");
			calendar.set(year, month - 1, i);
			if (calendar.get(Calendar.DAY_OF_WEEK) == 1) {
				System.out.println();
			}
		}
	}
	
}

DateFormat 日期格式类

是一个抽象类,有子类SimpleDateFormat

使用getInstance()系类方法获取实例,不同的实例化风格不一样

getInstance(): 19-12-11 下午4:09
getDateInstance(): 2019-12-11
getTimeInstance(): 16:09:56

常用的方法:

  1. 将日期格式化成字符串
Date now = new Date();
DateFormat df1 = DateFormat.getInstance();
String str1 = df1.format(now);
  1. 将符合格式的字符串解析成日期对象
Date date1 = null;
try{
    date1 = df1.parse("19-12-11 ")
} catch(ParseException e){
    e.PrintStackTrace();
}

SimpleDateFormat 类

是DateFormat的子类

使用构造方法创建对象:

  1. 无参构造创建对象和DateFormat.getInstance()获取的实例格式一致
Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat();

sdf.format(date);
  1. 一般使用有参
字符含义
yyyy年
MM月
dd日
HH时 (hh是12小时制度)
mm分
ss秒
SSS毫秒

常用方法

  1. format(Date date): 将日期对象格式化成字符串
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.format(now)
  1. parse(String str): 将符合格式的字符串解析成日期对象
String str = "1999-5-11 12:12:12.123";
Date date = null;
try{
    date = sdf.parse(str);
} catch(ParseException e){
    e.printStackTrace();
}

jdk 1.8+ 新日期类

LocalDateTime\LocalDate\LocalTime

注意:

  1. Date和Calendar类都在java.util包下,新日期类在java.timr包下
  2. 内部有一个私有的无参构造,不能new对象

常用的方法:

  1. 获取当前的时间 now()
LocalDateTime now = LocalDateTime.now();
  1. 根据指定日期创建对象 of()
LocalDateTime ldt = LocalDateTime.of(2019, 12, 12, 9, 8 ,8)
  1. 一系列的getter方法,用于获取日期相关字段值
System.out.println(ldt.getYear());
  1. 提供了一系列plus方法:用于计算日期,每次计算都会返回一个新的对象,不会修改原来的对象
LocalDateTime newLdt = ldt.plusDays(7);
  1. 日期对象格式化为字符串
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH点mm分ss秒");

String nowStr = now.format(dtf);

String nowStr1. format(now);

DateTimeFormatter 类

  1. jdk 1.8+
  2. DateFoamat 和 SimpleDateFormat都在java.text包下,DateTimeFormatter在java.time.format包下

常用方法:

  1. 根据指定格式化样式创建格式化器对象
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  1. 格式化日期对象
dtf.format(LocalTimeFormatter.now());
重点:LocalDateTime 和 Date 之间的相互转换

这里需要补充一个类:Instance

  1. jdk 1.8 +
  2. 瞬时类、时间戳、时刻类

Date -> LocalDateTime

@Test
public void test(){
    Date date = new Date();
    Instance instance = date.toInstance();
    //选择时区
    ZoneId zonId = ZoneId.systemDefault();
    LocalDateTime ldt = instance.atZone(zonId).toLocalDateTime();
}

LocalDateTime -> Date

@Test
public void test(){
    LocalDateTime ldt = LocalDateTime.now();
    ZoneId zoneId = ZoneId.systemDefault();
    Instance instance = ldt.atZone(zoneId).toInstance();
    Date date = Date.from(instance);
}

实际项目自定义一个日期的工具类:

/**
 * 自定义日期工具类
 */
 
 public final class MyDateUtil {
 
     private MyDateUtil() {
     }
     
      /**
      * Date转LocalDateTime
      * @Param date 传入Date对象
      * @return LocalDateTime 对象
      */
      public static LocalDateTime dateToLocalDateTime(Date date){
          return date.toInstance().atZine(ZoneId.systemDefault()).toLocalDateTime();
      }
      
      /**
       * LocalDateTime转Date
       * @Param localDateTime 传入LocalDateTime对象
       * @return Date对象
       */
       public static Date localDateTimeToData(LocalDateTime localDateTime) {
           return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
       }
       
       /**
        * date 转 calendar
        * @param date
        * @return Calendar对象
        */
        public static Calendar dateToCalendar(Date date){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar;
            }
            
       /**
        * Calendar转date
        * @param calendar
        * @return Date对象
        */
        public static Date calendarToDate(Calendar calendar){
            return calendar.getTime();
        }
        
       /**
        * date增加天数
        * @param date
        * @return Date对象
        */
        public static Date addDays(Date date, int days){
            Calendar calendar = dateToCalendar(date);
            calendar.add(Calendar.DAY_OF_MONTH, days);
            return date;
        }
        
       /**
        * date增加月份
        * @param date
        * @return Date对象
        */
        public static Date addMonths(Date date, int months){
            Calendar calendar = dateToCalendar(date);
            calendar.add(Calendar.MONTH, months);
            return date;
        }
        
       /**
        * date增加年数
        * @param date
        * @return Date对象
        */
        public static Date addYears(Date date, int years){
            Calendar calendar = dateToCalendar(date);
            calendar.add(Calendar.Year, years);
            return date;
        }
        
       /**
        * date增加年月日时分秒
        * @param date
        * @return Date对象
        * @throws Exception
        */
        public static Date add(Date date, int... params) throws Exception{
            if(params.length > 7 || params.length < 1){
                throw new Exception("参数必须是1-7");
            }
            
            int[] calendarValues = {
                Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH,
                Calendar.HOUR, Calendar.MINUTE, Calendar.SECOND, Calensdar.MILLISECOND
            };
            
            Calendar calendar = dateToCalendar(date);
            for(int i = 0; i < param.length; i++){
                calendar.add(calendarValue[i], params[i]);
            }
            
            return calendarToDate(calendar);
        }
 }
 
时序数据库避坑指南:TDengine与IoTDB在车联网场景的7个关键对比 本文对比了时序数据库TDengine与IoTDB在车联网场景下的7个关键差异,包括数据模型设计、边缘-云端协同能力、车规级函数库、存储压缩算法等。通过真实案例和性能测试,帮助企业在新能源汽车大数据处理中选择合适的时序数据库,优化存储成本和实时告警性能。 阅读详情

相关推荐

基于Unity引擎利用OpenCV和MediaPipe的面部表情和人体运动捕捉系统

增加了模型的绑定,利用Mediapipe这个强大的库可以实现识别面部表情的捕捉和人体结构运动的捕捉,基于以上的特性加入到Unity的人物模型中,实现实时的面部表情和人体运行的捕捉

BIgbossyii的博客 1万+

java now date string_Date now=new Date()方法获取时间为什么不对,求大神指教!!!

package collection.exercise;import java.util.Date;import java.text.SimpleDateFormat;import java.text.ParseException;public class DateFormat{public static void main(String[] args)throws ParseException ...

weixin_42366447的博客 766

数据中心GPU芯片性能参数速查表(Nvidia+国产算力卡)

本文提供了一份数据中心GPU芯片性能参数速查表,涵盖Nvidia与国产算力卡两大阵营。文章详细解读了算力、显存、互连技术及功耗等关键性能指标,并对比了A100、H100、昇腾910B等主流型号,旨在帮助用户根据AI训练、推理等实际场景,做出高效的硬件选型与成本评估决策。

a0b1c2d3的专栏 835

Java获取系统时间的常用方法

Java获取系统时间有以下四种常见方法 方法一:通过Date类来获取当前时间 Date now=new Date(); System.ou.println(now.getTime()); //设置日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");...

Welcome to loveuui's blog 2561

1.毫米波雷达心率、呼吸原理实现(一)实例

毫米波雷达心率、呼吸检测原理本项目分两到三篇文章写完,第一阶段借鉴TI开源项目以及根据自己的见解适当更改信号处理链通过AWR1843汽车雷达传感器和DCA1000采集卡采集数据完成人体呼吸和心跳检测算法的实现。第二阶段将仿真成功的代码搬移TIAWR1843传感器并通过串口数据实现生命体征的实时处理。本文即为第一阶段实现过程。本文首先概述毫米波雷达呼吸心跳检测的原理,紧接着概述本项目信号处理流程,另外本项目第一阶段通过matlab仿真验证算法的有效性,仿真源码可关注小编并私信可取。1.概述。

Poulen的博客 2万+

SpringBoot整合LangChain4j实现RAG检索实战详解

本文介绍了使用LangChain4j框架在Java生态中构建RAG(检索增强生成)应用的最佳实践。作为最接近Python LangChain的Java实现,LangChain4j提供了文档解析、向量化存储到检索增强的全套组件,并与SpringBoot深度集成。文章通过电商智能客服场景,详细演示了从零搭建RAG系统的完整流程:包括使用PostgreSQL+pgvector作为生产级向量数据库、文档加载与向量化处理、声明式AI服务实现以及查询压缩、结果重排等进阶优化技巧。同时对比了内存模式与生产级向量库的差异,

分享AI、区块链技术及应用,未来已来 432

日期知识点

一、日期-Date类-----import java.util.Date 时间原点概念: 所有的数据类型,无论是整数,布尔,浮点数还是字符串,最后都需要以数字的形式表现出来。日期类型也不例外 零. 零这个数字,就代表Java中的时间原点,其对应的日期是1970年1月1日 8点0分0秒 。所有的日期,都是以为这个0点为基准, 每过一毫秒,就+1。 1、创建日期对象,获取当前日期: Date a = new Date(); System.out.println("当前时...

m0_58495313的博客 385

一文吃透 SAP HANA Service Broker:原理、架构与落地实践

摘要:SAP HANA Service Broker 作为云原生开发的关键组件,通过标准化流程管理 HDI 容器与服务实例的生命周期,实现数据库资源的自动化配置与安全隔离。它采用服务目录、服务计划和绑定机制,将连接凭据注入应用环境变量,避免硬编码风险。在实际应用中,需根据模块生命周期决定共享或隔离容器,并通过跨容器访问模式实现安全数据共享。典型案例展示了电商平台的多模块协同与SaaS租户隔离场景,验证了其在提升运维效率与安全合规方面的价值。最佳实践强调以生命周期划边界、最小权限原则和HTTPS安全传输,为企

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 224

java int转日期_Java时间日期格式转换

Java时间格式转换大全import java.text.*;import java.util.Calendar;public class VeDate {/*** 获取现在时间** @return 返回时间类型 yyyy-MM-dd HH:mm:ss*/public static Date getNowDate() {Date currentTime = new Date();SimpleDat...

weixin_36377344的博客 4561

计算机网络基础:认识网络硬件与传输介质

计算机网络基础:认识网络硬件与传输介质,在计算机网络的庞大体系中,网络硬件与传输介质犹如坚实的骨架与脉络,支撑并承载着信息的流动。从家庭中的小型网络,到企业复杂的办公网络,再到覆盖全球的互联网,各类网络硬件设备各司其职,不同的传输介质发挥着独特的传输作用。它们相互协作,使得数据能够在不同设备之间快速、准确地传输,为人们的日常沟通、工作办公、娱乐休闲等活动提供了基础保障。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

YOLOv11模型剪枝实战:让检测速度翻倍,精度仅降1%的终极优化教程

模型剪枝是YOLOv11落地边缘场景的“关键一步”——它让模型在“瘦身”的同时,几乎不损失精度。从稀疏化训练到通道剪枝,再到工程部署,本教程已为你打通全流程。现在就动手尝试,让你的YOLOv11模型在嵌入式设备、移动端上也能“飞起来”——相信我,当你看到剪枝后的模型在资源受限设备上仍能精准检测时,你会明白这份技术的价值。

m0_64661770的博客 711

Date.now()和new Date()的区别以及选择

Date.now()和new Date()的区别以及选择

qq_41277759的博客 1944

【UML】-- 期末试题题库含答案(各章题目、选择题、填空题、简答题、画图题)

每章都有对应的题目和答案,选择题,填空简答,大题,答案已标红,方便大家观看

个人博客 1万+

Java知识点(四):Date,Calendar时间与日历类

我们来通过几个实操,来了解Date类的几个用法  1.声明一个Date now对象【util包下的Date类】            Date now = new Date( ); now.toString //【调用Date中重写的toString( )】 System.out.println(now.toString);     ...

J.R.Leonardo的博客 748

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java 日期 date_Java Date 日期 时间 相关方法

import java.util.*;import java.text.*;public classDateTime {publicDateTime() {}public static final long SECOND = 1000;public static final long MINUTE = 60 *SECOND;public static final long HOUR = 60 *M...

weixin_39744240的博客 299

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java获取当前日期,前一天日期时间戳

直接上代码 ZoneId z = ZoneId.systemDefault();//获取时区 ZonedDateTime dt = ZonedDateTime.now(z);//获取当前时间 long start = dt.toLocalDate().atStartOfDay(z).toEpochSecond()*1000;//获取当天的起始时间戳 long end=start+(23L*3600+1L*3599)*1000;//获取当天的结束时间

J_com的博客 4567

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Date.now 与 new Date().getTime() 的区别

Date.now 与 new Date().getTime() 都可以获取时间戳,但是实际上性能是不一样的(虽然差别不大,但是也算是一种性能的追求),可以做个测试 console.time('+new Date()') for(var i = 0; i &lt; 650000; i++) { var o = + new Date() } console.timeEnd('...

Slice-dd 1万+

Java中关于日期的常见操作

主要涉及三个类:Date、Calendar、LocalDate/LocalTime/LocalDateTime类。

m0_46393656的博客 669

时间加上偏移量于当前时间比较大小 java实现

public static int compareNowDate(String dateStr,int excursion){ SimpleDateFormat formatt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); Date dt=formatt.pars

keyboard专栏 2284

java里 currenttime_java 获取当前时间LocalDateTime currentTimeMillis java.util.Date

总结java里面关于获取当前时间的一些方法System.currentTimeMillis()获取标准时间可以通过System.currentTimeMillis()方法获取,此方法不受时区影响,得到的结果是时间戳格式的。例如:1543105352845我们可以将时间戳转化成我们易于理解的格式java;">SimpleDateFormatformatter=newSimpleDateF...

weixin_29331015的博客 1990

Java中获得日期时间的8种方法

编号途径代码说明建议 1 java.util.Date new Date() Date对象 少用 2 System System.currentTimeMillis() 时间戳 常用 3 java.util.Calendar Calendar.getInstance().getTime() Date升级版 较常用 4 java.time.LocalDate LocalDat...

土味儿 1438

JavaScript笔记之Date之 Date.now()===new Date().getTime()

Date.now 和 new Date().getTime() 相同点 都是获取1970年1月1日到现在的毫秒数 不同点 1 . 性能不同 一千万次测试 Date.now() 用时 0.8 秒 new Date().getTime() 用时 1.4 秒 2. 调用方式不同 now() 是直接调用 getTime() 是原型链上的方法 性能的差异也体现了调用prototype的损耗 ...

kfepiza的博客 2370

Java 时间日期处理,工作必用(建议收藏)

工作中经常会遇到对时间日期进行处理的业务,像日期类的API个人觉得不需要背,需要的时候去查资料就行。日期时间格式化处理、日期对象类相互转换,计算日期时间间隔等方法

lucky_fd的博客 3096

日期类型转换

一、Date类     Date类可以在java.util包中找到,它创建一个表示创建时刻的对象,用一个long类型的值表示一个指定的时刻。它的构造函数是Date()类型,getTime()方法返回Date对象的long值。在下面的程序中,使用Date()构造函数创建一个表示程序运行时刻的对象,并且利用getTime()方法找到这个日期代表的毫秒数量,示例代码如下: package tes...

ykizz的博客 895

Java 系统时间转为date_JAVA中获取当前系统时间及格式转换

一. 获取当前系统时间和日期并格式化输出:import java.util.Date;import java.text.SimpleDateFormat;public class NowString {public static void main(String[] args) {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:m...

weixin_30517215的博客 3092

JAVA面试题解惑系列(七)——日期和时间的处理

日期和时间的处理不仅在面试题中会考到,在实际项目开发中也是我们经常需要处理的问题,似乎没有哪个项目可以避开它们,我们常常在处理用户的出生年月日、注册日期,订单的创建时间等属性时用到,由此可见其重要性。 java.util.Date类 提到日期和时间,我想大家最先想到应该是java.util.Date类吧。Date类可以精确到毫秒数,这个毫秒数是相对于格林威治标准时间“1970...

weixin_34418883的博客 396
上一篇: 【Java高级特性】java学习之旅31-Math类、Random类
下一篇: 【Java高级特性】java学习之旅34-序列化与反序列化
JeffHan^_^
博客等级 码龄7年 1万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值