时间戳-JAVA日期工具类Date()与Calendar()

Calendar,Date,Timestamp的使用及其转换 下面列出了Date,Timestamp ,String相互转换,以及通过Calendar创建时间的例子 import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class CalenarAndTimeTest{ public static void ma 阅读详情

1.时间戳概念        

        时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,本质是一个long类型的整数,表示日期对象。java 体系的时间戳是毫秒。

2.Date()类

        Date 类表示系统特定的时间戳,可以精确到毫秒。Date 对象表示时间的默认顺序是星期、月、日、小 时、分、秒、年。

Date 类有如下两个构造方法。

Date date1 = new Date(); // 调用无参数构造函数

System.out.println(date1.toString()); // 输出:Wed May 18 21:24:40 CST 2016

Date date2 = new Date(60000); // 调用含有一个long类型参数的构造函数 System.out.println(date2); // 输出:Thu Jan 0108:01:00 CST 1970

  • Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),使 用该构造方法创建的对象可以获取本地的当前时间。
  • Date(long date):此种形式表示从 GMT 时间(格林尼治时间)1970 年 1 月 1 日 0 时 0 分 0 秒开 始经过参数 date 指定的毫秒数。

        Date 类的无参数构造方法获取的是系统当前的时间,显示的顺序为星期、月、日、小时、分、秒、年。

        Date 类带 long 类型参数的构造方法获取的是距离 GMT 指定毫秒数的时间,60000 毫秒是一分钟,而GMT(格林尼治标准时间)与 CST(中央标准时间)相差 8 小时,也就是说 1970 年 1 月 1 日 00:00:00GMT 与 1970 年 1 月 1 日 08:00:00 CST 表示的是同一时间。 因此距离 1970 年 1 月 1 日 00:00:00 CST 一分钟的时间为 1970 年 1 月 1 日 00:01:00 CST,即使用 Date 对象表示为 Thu Jan 01 08:01:00 CST 1970。

方法描述
boolean after(Date when)判断此日期是否在指定日期之后
boolean before(Date when)判断此日期是否在指定日期之前
int compareTo(Date anotherDate)比较两个日期的顺序
boolean equals(Object obj)比较两个日期的相等性
long getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来,此 Date 对象表示的毫秒数
String toString()把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy。 其 中 dow 是一周中的某一天(Sun、Mon、Tue、Wed、Thu、Fri 及 Sat)

Date类处理日期时间的实例如下:

/*
 * Copyright (c) 2020, 2023, suicer All rights reserved.
 *
 */

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * <p>Project: day0708 - ZhanTie
 * <p>Powered by suicer On 2023-07-08 15:54:35
 * <p>Created by IntelliJ IDEA
 *
 * @author suicer [suicer@QQ2130949006]
 * @version 1.0
 * @since 1.8
 */
public class ZhanTie {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 将字符串转化为日期
        Date date = null;
        try {
            date = sdf.parse("2000-11-11 11:11:11");
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        System.out.println(date);
        Date date = new Date();
        // 将日期转化为字符串
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        String str = sdf.format(date);
        System.out.println(str);
        var now = new Date(); // 创建一个Date对象,获取当前时间
        // 指定格式化格式
        var f = new SimpleDateFormat("今天是 " + "yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒");
        System.out.println(f.format(now)); // 将当前时间格式化为指定的格式
    }
}

3.Calendar类

        Calendar 类是一个抽象类,它为特定瞬间与 YEAR、MONTH、DAY_OF—MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期) 提供了一些方法。

        创建 Calendar 对象不能使用 new 关键字,因为 Calendar 类是一个抽象类,但是它提供了一个 getInstance() 方法来获得 Calendar类的对象。getInstance() 方法返回一个 Calendar 对象,其日历字段已 由当前日期和时间初始化。

Calendar c = Calendar.getInstance();

        当创建了一个 Calendar 对象后,就可以通过 Calendar 对象中的一些方法来处理日期、时间。

方法描述
void add(int field, int amount)根据日历的规则,为给定的日历字段 field 添加或减去指定的时间 量 amount
boolean after(Object when)判断此 Calendar 表示的时间是否在指定时间 when 之后,并返回 判断结果
boolean before(Object when)判断此 Calendar 表示的时间是否在指定时间 when 之前,并返回 判断结果
void clear()清空 Calendar 中的日期时间值
int compareTo(Calendar anotherCalendar)比较两个 Calendar 对象表示的时间值(从格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒至现在的毫秒偏移量),大则返回 1,小则返回 -1,相等返回 0
int get(int field)返回指定日历字段的值
int getActualMaximum(int field)返回指定日历字段可能拥有的最大值
int getActualMinimum(int field)返回指定日历字段可能拥有的最小值
int getFirstDayOfWeek()获取一星期的第一天。根据不同的国家地区,返回不同的值
static Calendar getInstance()使用默认时区和语言坏境获得一个日历
static Calendar getInstance(TimeZone zone)使用指定时区和语言环境获得一个日历
Date getTime()返回一个表示此 Calendar 时间值(从格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒至现在的毫秒偏移量)的 Date 对象
long getTimeInMillis()返回此 Calendar 的时间值,以毫秒为单位
void set(int field, int value)为指定的日历字段设置给定值
void set(int year, int month, int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
void set(int year, int month, int date, int hourOfDay, int minute, int second)设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、 MINUTE 和 SECOND 的值
void setFirstDayOfWeek(int value)设置一星期的第一天是哪一天
void setTimeInMillis(long millis)用给定的 long 值设置此 Calendar 的当前时间值

        Calendar 对象可以调用 set() 方法将日历翻到任何一个时间,当参数 year 取负数时表示公元。Calendar 对象调用 get() 方法可以获取有关年、月、日等时间信息,参数 field 的有效值由 Calendar 静态常 量指定。

  • Calendar 类中定义了许多常量,分别表示不同的意义。
  • Calendar.YEAR:年份。
  • Calendar.MONTH:月份。
  • Calendar.DATE:日期。
  • Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。
  • Calendar.HOUR:12小时制的小时。
  • Calendar.HOUR_OF_DAY:24 小时制的小时。
  • Calendar.MINUTE:分钟。
  • Calendar.SECOND:秒。
  • Calendar.DAY_OF_WEEK:星期几。

        例如,要获取当前月份可用如下代码:

 int month = Calendar.getInstance().get(Calendar.MONTH);

        如果整型变量 month 的值是 0,表示当前日历是在 1 月份;如果值是 11,则表示当前日历在 12 月 份。 使用 Calendar 类处理日期时间的实例如下:

/*
 * Copyright (c) 2020, 2023, suicer All rights reserved.
 *
 */

import java.util.Calendar;
import java.util.Date;

/**
 * <p>Project: day0708 - ZhanTie
 * <p>Powered by suicer On 2023-07-08 15:54:35
 * <p>Created by IntelliJ IDEA
 *
 * @author suicer [suicer@QQ2130949006]
 * @version 1.0
 * @since 1.8
 */
public class ZhanTie {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance(); // 如果不设置时间,则默认为当前时间
        calendar.setTime(new Date()); // 将系统当前时间赋值给 Calendar 对象
        System.out.println("现在时刻:" + calendar.getTime()); // 获取当前时间
        int year = calendar.get(Calendar.YEAR); // 获取当前年份
        System.out.println("现在是" + year + "年");
        int month = calendar.get(Calendar.MONTH) + 1; // 获取当前月份(月份从 0 开始,所以加1)
        System.out.print(month + "月");
        int day = calendar.get(Calendar.DATE); // 获取日
        System.out.print(day + "日");
        int week = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 获取今天星期几(以星期日为第一天)
        System.out.print("星期" + week);
        int hour = calendar.get(Calendar.HOUR_OF_DAY); // 获取当前小时数(24 小时制)
        System.out.print(hour + "时");
        int minute = calendar.get(Calendar.MINUTE); // 获取当前分钟
        System.out.print(minute + "分");
        int second = calendar.get(Calendar.SECOND); // 获取当前秒数
        System.out.print(second + "秒");
        int millisecond = calendar.get(Calendar.MILLISECOND); // 获取毫秒数
        System.out.print(millisecond + "毫秒");
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); // 获取今天是本月第几天
        System.out.println("今天是本月的第 " + dayOfMonth + " 天");
        int dayOfWeekInMonth = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
// 获取今天是本月第几周
        System.out.println("今天是本月第 " + dayOfWeekInMonth + " 周");
        int many = calendar.get(Calendar.DAY_OF_YEAR); // 获取今天是今年第几天
        System.out.println("今天是今年第 " + many + " 天");
        Calendar c = Calendar.getInstance();
        c.set(2012, 8, 8); // 设置年月日,时分秒将默认采用当前值
        System.out.println("设置日期为 2012-8-8 后的时间:" + c.getTime()); 
        // 输出时间上面的示例代码演示了 Calendar 类中的方法与常量的结合使用,从而完成处理日期的操作。
    }
}

Java开发-日期与时间戳转换封装工具类 在日常开发中会经常用到日期和时间戳之间的相互转换,先来大概梳理一下都需要具备什么功能: 1. 时间戳和Date转时间 2. 时间和Date转时间戳 3. 时间和时间戳转Date 阅读详情

相关推荐

Java时区问题(二)--为何Calendar设置timezone后时间戳没变

问题:为何Calendar设置timezone后,时间戳没变 我想设置成雅加达时区(东7区,即北京时间-1h),我是这样设置时间戳的: //我想设置成雅加达时区(东7区,即北京时间-1h) Date now = new Date(); System.out.println(now); Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("Asia/Jakarta")); Date date1 = cal1.getTime(); Sys.

i2295301的博客 1888

安卓获取当前时间并进行时间比较

package com.xjp.common.util; import java.sql.Timestamp;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Date; import com.ttsoft.framework.util.DateUtil; /** * Title: 时间

张哲伟的博客 1415

Java常见工具类:Date类与Calender类

java.util包提供了Date类来封装当前的日期和时间。另一个是接收一个long型参数date的构造方法Date(long date),用于创建指定时间的Date对象,其中date参数表示1970年1月1日0时0分0(称为历元)以来的毫秒数,即时间戳。DateFormat是抽象类,不能被直接实例化,该类提供了一个SimpleDateFormat类,可以使用new关键字创建实例对象,它的构造方法接收一个格式字符串参数,表示日期格式模板,使用format()方法对日期进行格式化。

weixin_54707168的博客 849

JAVA时间戳-Calendar类(包括set,get,add方法)

Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

0 3406

避开ns-3学习深坑:用sns3模块快速搭建GEO卫星通信仿真(附GitHub代码解读)

本文介绍了如何使用sns3模块快速搭建GEO卫星通信仿真环境,绕过复杂的ns-3底层细节。通过详细的Linux环境配置、sns3模块安装和示例代码解读,帮助开发者快速上手卫星通信仿真,并提供了常见问题的解决方案和性能优化技巧。

weixin_28720573的博客 438

Keil5安装包别乱下!手把手教你从官网精准下载C51/V960和MDK5,并完成2032年有效注册(避坑网络资源失效)

本文详细介绍了如何从Keil官网安全下载C51 V9.60和MDK5开发环境,并提供2032年有效注册的完整指南。通过验证安装包完整性、自定义安装路径和长期激活方案,帮助开发者避开网络资源陷阱,搭建稳定的STM32开发环境。

weixin_26886855的博客 529

Java时间戳与Date互转

1.时间戳转为日期格式字符串 @Test public void test1(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 获取当前系统时间戳 //long l = System.currentTimeMillis(); //如果你数据库存储的时间戳类型为string,就需要将string字符串转为long类型 Str

余生一个帆的博客 3万+

Kettle Web版部署指南

看到以上的日志则表示启动成功。

2401_89221867的博客 1717

java时间戳 calendar_Java - 时间戳、Date、Calendar、SimpleDateFormat

Javapackage com.ikoo.demo;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateUtil {public static void main(String[] args) {/*** 时间戳* 1.System.currentTim...

weixin_42528534的博客 666

ST7789P3初始化配置

【代码】ST7789P3初始化配置。

zqq_1314的博客 4151

如何用Arduino和HX711压力传感器制作一个简易电子秤(含OLED显示)

本文详细介绍了如何使用Arduino、HX711压力传感器和OLED显示屏制作一个简易电子秤。从硬件连接到软件编程,提供了分步教程,包括核心元件功能解析、接线方法、库安装、模块测试以及关键的校准流程。项目实践性强,适合创客和DIY爱好者学习嵌入式系统与传感器应用。

tea88的博客 536

Date() 、LocalDateTime()、Calendar() 之间的转换

date() localDateTime()

qq_57197323的博客 2033

MCGSPro动画部件实战:用文本分段实现智能报警提示(附工程文件)

本文详细介绍了在MCGSPro组态软件中,如何利用动画部件的文本分段功能,高效实现触摸屏上的智能报警提示。通过绑定整数变量作为索引,一个部件即可动态切换多种状态信息,解决了传统方法画面臃肿、维护繁琐的痛点。文章提供了从变量定义、部件配置到逻辑联动的完整实战教程,并分享了工程文件复用与性能优化技巧。

weixin_28347369的博客 166

Java日期时间的比较_加减(date,calendar,localdatetime)

在Java编程中,经常需要对时间进行比较和处理。用于比较时间的类有多种,包括Date、Calendar和LocalDateTime等。本文将介绍如何在Java中比较时间的不同方法,并提供相应的代码示例

sweetser的博客 1万+

R语言 百度坐标转换至WGS84坐标

本文利用R语言封装了百度坐标转换至WGS84坐标的函数,亲测有效,提供了便捷的百度坐标转换方法。

qingchen98的博客 2135

告别 SAP GUI 事务码时代:手把手教你配置 SAP Fiori Launchpad

SAP S/4HANA私有云系统安装后,Fiori Launchpad空页面问题常因多层配置未完成所致。SAP仅提供基础技术配置,实际应用启用、业务目录创建、角色授权等需实施团队完成。Fiori配置分为跨客户端层(技术目录)、客户端定制层(业务目录、空间页面)和用户个性化层三层架构。标准授权流程需依次创建业务目录、业务角色、空间页面并正确分配。SAP建议使用最新的配置工具如FLPAM和FLPCM,并采用Spaces/Pages替代已弃用的Groups概念。完整授权需六步:分配基础角色、创建业务目录、维护业务

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

Java中获取时间戳

** Java语言中关于三种时间戳的获取之心得 ** 最近项目开发过程中发现了项目中获取时间戳的业务。而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式。 1.System.currentTimeMillis() System类中的currentTimeMillis()方法是三种方式中效率最好的,运行时间最短。开发中如果设计到效率问题,推荐使用此种方式获取。 System.currentTimeMillis() 2.new Date().getTime() 除

sANsHiErHuA的博客 5万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较

在Java中,生成当前的时间戳大致上有这么几种方法,分别是: 一、System.currentTimeMillis(),它属于java.lang.System; 二、Calendar.getInstance().getTimeInMillis(),它属于java.util.Calendar; 三、new Date().getTime(),它属于java.util.Date;

Gordon家的哈士奇 3640

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

new Date().getTime()和System.currentTimeMillis()获取时间戳的比较

最近在优化项目代码,看项目组的代码时,发现了一个有趣的现象,有使用new Date().getTime()来获取时间戳的, 也有使用System.currentTimeMillis()来获取时间戳的,这让我想到,好像我平时写代码也是想起哪种方式就用什么方式写。这两种方式都可以,仔细思考一下,两者应该会有区别的,应该有是最优的方式? 然后就看了看源码,其实解决疑惑最优方式就是看源码,打开java....

No8g攻城狮的博客 1824

Java 时间格式之间的相互转换(Date、Calendar、timestamp时间戳)

Java 时间格式之间的相互转换(Date、Calendar、timestamp时间戳)

qq_41650131的博客 2622

Date类与Calendar类

一、Date类 1、认识Date类  java.util包下的Date类,Date对象既包含日期,该类从JDK1.0就开始有了,所以大部分的构造器和方法已经过时,编写时有时会报错。 Date类一共有6个构造器,其中4个已经Deprecated,剩余两个如下: 2、构造器 Date():生成一个代表当前日期时间的Date对象,该构造器在底层调用System.currentTimeMilli...

qq_41915601的博客 1486

java calendar与date_Java Calendar日历与Date日期的相互转换详解

Java Calendar日历与Date日期的相互转换详解Calendar转化为Data返回标准化的Datepublic static Date calendarToData(int year, int month, int day) {Calendar calendar = Calendar.getInstance();//日历类的实例化calendar.set(year, month - 1,...

weixin_31739613的博客 836

java 日期时间戳,Java之时间戳、Date(日期)、Calendar(日历)、时间转换和Date格式化...

概念时间原点概念所有的数据类型,无论是整数,布尔,浮点数还是字符串,最后都需要以数字的形式表现出来。日期类型也不例外,换句话说,一个日期,比如2020年10月1日,在计算机里,会用一个数字来代替。那么最特殊的一个数字,就是零. 零这个数字,就代表Java中的时间原点,其对应的日期是1970年1月1日 8点0分0秒 。 (为什么是8点,因为中国的太平洋时区是UTC-8,刚好和格林威治时间差8个小时)...

weixin_36242060的博客 7433

Java基础——Date和Calendar类超详细讲解

类用于表示特定的时间点,精确到毫秒。它记录的是自1970年1月1日00:00:00 GMT(格林威治标准时间)以来的毫秒偏移量,这个时间点也被称作“纪元时间”。不过,Date类的大部分方法已被弃用,原因在于其API设计不够直观,并且对国际化支持不足。即便如此,在一些需要快速表示日期和时间戳的场景中,Date类仍被频繁使用。类是一个抽象类,用于表示特定时区内的日历日期和时间。它提供了丰富的方法来操作日期和时间字段,比如年、月、日、小时、分钟、秒等,并且支持国际化。通常使用其静态方法来获取Calendar。

jukuya的博客 1588

Date与时间戳的相互转换(Java)

    1、Date对象转换为时间戳 Date date = new Date(); long times = date.getTime(); System.out.println(times);    效果如下: 1508824283292   2、时间戳转换为Date日期对象 long times = System.currentTimeMillis(); Date...

weixin_34183910的博客 1万+
上一篇: Git的安装,配置,和使用
下一篇: 流程控制-分支语句(if与switch)
涵冰...
博客等级 码龄4年 2438粉丝 243原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

涵冰...

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

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

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

打赏作者

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

抵扣说明:

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

余额充值