java calendar 设置小时_Java Calendar类的时间操作-程序员宅基地

技术标签: java calendar 设置小时  

Java Calendar 类时间操作,这也许是创建日历和管理最简单的一个方案,示范代码很简单,演示了获取时间,日期时间的累加和累减,以及比较。

注意事项:

Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。

而 Calendar.DAY_OF_WEEK 定义和值如下:

Calendar.SUNDAY = 1

Calendar.MONDAY = 2

Calendar.TUESDAY = 3

Calendar.WEDNESDAY = 4

Calendar.THURSDAY = 5

Calendar.FRIDAY = 6

Calendar.SATURDAY = 7

SimpleDateFormat 的格式定义

2352f46f18ad5403c861d3c750ae8c65.png

Java Calendar 演示代码如下:

package demo;

import java.util.Date;

import java.text.SimpleDateFormat;

import java.text.DateFormat;

import java.text.ParseException;

import java.util.Calendar;

public class Test

{

public Test()

{

}

public static void main(String[] args)

{

// 字符串转换日期格式

// DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

// 接收传入参数

// String strDate = args[1];

// 得到日期格式对象

// Date date = fmtDateTime.parse(strDate);

// 完整显示今天日期时间

String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new Date());

System.out.println(str);

// 创建 Calendar 对象

Calendar calendar = Calendar.getInstance();

try

{

// 对 calendar 设置时间的方法

// 设置传入的时间格式

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d H:m:s");

// 指定一个日期

Date date = dateFormat.parse("2013-6-1 13:24:16");

// 对 calendar 设置为 date 所定的日期

calendar.setTime(date);

// 按特定格式显示刚设置的时间

str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());

System.out.println(str);

}

catch (ParseException e)

{

e.printStackTrace();

}

// 或者另一種設置 calendar 方式

// 分別爲 year, month, date, hourOfDay, minute, second

calendar = Calendar.getInstance();

calendar.set(2013, 1, 2, 17, 35, 44);

str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());

System.out.println(str);

// Calendar 取得当前时间的方法

// 初始化 (重置) Calendar 对象

calendar = Calendar.getInstance();

// 或者用 Date 来初始化 Calendar 对象

calendar.setTime(new Date());

// setTime 类似上面一行

// Date date = new Date();

// calendar.setTime(date);

str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());

System.out.println(str);

// 显示年份

int year = calendar.get(Calendar.YEAR);

System.out.println("year is = " + String.valueOf(year));

// 显示月份 (从0开始, 实际显示要加一)

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

System.out.println("nth is = " + (month + 1));

// 本周几

int week = calendar.get(Calendar.DAY_OF_WEEK);

System.out.println("week is = " + week);

// 今年的第 N 天

int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);

System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR);

// 本月第 N 天

int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);

System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH));

// 3小时以后

calendar.add(Calendar.HOUR_OF_DAY, 3);

int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);

System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY);

// 当前分钟数

int MINUTE = calendar.get(Calendar.MINUTE);

System.out.println("MINUTE = " + MINUTE);

// 15 分钟以后

calendar.add(Calendar.MINUTE, 15);

MINUTE = calendar.get(Calendar.MINUTE);

System.out.println("MINUTE + 15 = " + MINUTE);

// 30分钟前

calendar.add(Calendar.MINUTE, -30);

MINUTE = calendar.get(Calendar.MINUTE);

System.out.println("MINUTE - 30 = " + MINUTE);

// 格式化显示

str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());

System.out.println(str);

// 重置 Calendar 显示当前时间

calendar.setTime(new Date());

str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());

System.out.println(str);

// 创建一个 Calendar 用于比较时间

Calendar calendarNew = Calendar.getInstance();

// 设定为 5 小时以前,后者大,显示 -1

calendarNew.add(Calendar.HOUR, -5);

System.out.println("时间比较:" + calendarNew.compareTo(calendar));

// 设定7小时以后,前者大,显示 1

calendarNew.add(Calendar.HOUR, +7);

System.out.println("时间比较:" + calendarNew.compareTo(calendar));

// 退回 2 小时,时间相同,显示 0

calendarNew.add(Calendar.HOUR, -2);

System.out.println("时间比较:" + calendarNew.compareTo(calendar));

}

}

要计算时间差,可用 Calendar.getTimeInMillis() 取得两个时间的微秒级的时间差,再加以换算即可,比如获得相差天数,代码如下:

// 得微秒级时间差

long val = calendarEnd.getTimeInMillis() - calendarBegin.getTimeInMillis();

// 换算后得到天数

long day = val / (1000 * 60 * 60 * 24);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30419031/article/details/115067414

智能推荐

阿里程序员常用的 15 款开发者工具~-程序员宅基地

文章浏览阅读88次。从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展。阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。由于开发者涉及的技术领域众多,笔者仅从自己熟悉的领域,以后端开发者的视角盘点平时可能用得到的工具。每个工具按照以下几点进行介绍:工具名称和简介使用场景使用教程获取方式一、Java 线上诊断工具 ArthasArthas是阿里巴巴 2018 年 9 月开

java实体类及类属性判空_判断实体类是否为空-程序员宅基地

文章浏览阅读1.1w次。敲代码时判空是必须的,这里分享一下java实体类及类属性判空体会。一、实体类判空:1.1实体类判空如果是读库返回实体类,我们直接判空即可,如下图1.2如果是先定义了类就不能这样判空了,因为new 对象时已经分配了资源,代码不执行if而是执行else,如下图二、类属性判空如果遇到上述1.2情况时,属性判空就比较麻烦了,特别是类属性是基本类型时,比如类的id属性是long类型时,这时可以用下面的代码(下面的代码是看网上提供的判断类是否都为null的判断方法)修改上述代码为下图,就可以根据实际需求_判断实体类是否为空

源码阅读笔记 - 2 std::vector (1)-程序员宅基地

文章浏览阅读362次。vector的源码真是太长了,今天用了一个下午和一个晚上看和注释了前面的一千行左右p.s.博客园的代码高亮真是太垃圾, 如果想要阅读带注释的源码,推荐粘贴到VS2015里,然后按ctrl+z取消自动格式化,用我格式化好的样子,并在最前面#include <vector>和using namespace std,这样就能带高亮的看我加了注释的代码了花了不短的时间弄明白了..._2std

利用python实现对连续特征的分箱操作(数据离散化)_连续性数据分箱方法-程序员宅基地

文章浏览阅读5.7k次。1. 数据分箱1.1 等区间分箱将连续变量的值进行获取,然后利用pandas的cut函数进行等区间分箱。如下代码,获取值A2_values ,并等数值区间分为6类为[0,1,2,3,4,5];(cut在操作时,统计了一维数组的最小、最大值,得到一个区间长度,因为需要划分6个区间)1.2 等频分箱将连续变量在[min,max]区间内,等数量地进行分箱。1.3 卡方分箱法(ChiMe..._连续性数据分箱方法

时序动作检测SSAD《Single Shot Temporal Action Detection》-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏29次。温馨提示:本文仅供自己参考(勿捧杀),如有理解错误,有时间再改!时序动作分类:识别一段视频中的动作类别时序动作检测:识别一段视频中的动作类别以及动作的开始和结束时间时空动作检测:识别一段视频中的动作类别、动作的开始和结束时间,以及动作发生的空间位置(如投篮人所在的bbox)时序动作检测可以被看做是时序版本的图像目标检测,因为两者都是需要检测目标的类别,并且都需要确定目标的准确边界位置。detect by classifying时序动作检测方法:先使..._时序动作检测

经典算法之——解决全排列问题以及详解_排列问题的过程-程序员宅基地

文章浏览阅读3.4k次,点赞18次,收藏81次。回溯”指的是“状态重置”,可以理解为“恢复现场”,是在编码的过程中,是为了节约空间而使用的,而在递归或者深度优先中根据需要的场合来配合回溯法可以进一步对自己的代码进行优化。, n-1, n},方向都为向左。邻位对换法是全排列生成算法中的其中一种,它的换位是双向的,通过保存数字的“方向性”来快速得到下一个排列。最后以 3 开头的全排列为[3, 1, 2], [3, 2, 1];以 1 开头的全排列为[1, 2, 3], [1, 3, 2];以 2 开头的全排列为[2, 1, 3], [2, 3, 1];_排列问题的过程

随便推点

PPT的配色方法(师从于珞珈老师)_ppt配色教程-程序员宅基地

文章浏览阅读969次。PPT的配色方法PPT中色彩的用处层次更加的清晰,ppt中有小标题 大标题 正文等不同的部分,每一个部分的重点和级别程度也不一样,可以使用不同的颜色来对重点和非重点进行区分分割内容区域,通常一个PPT具有很多个部分,每个部分表达的内容可能不一样,比如开题PPT,就包括了研究背景和意义、研究现状、研究内容、工作进度安排和参考文献五个部分。分别对每个部分用不同颜色加以区分(这里求同存异,我个人是不太赞成老师这一观点的,因为我一直觉得一套PPT必须有一套的完整风格)强化主题联系,在专业的场合,_ppt配色教程

ajax 注册异步查询,Ajax异步查询用户是否存在-程序员宅基地

文章浏览阅读142次。码农公社 210.net.cn210是何含义?10月24日是程序员节,1024 =210、210既210之意。Ajax就将信息发到了服务器去检查该用户名是否已经被注册了,这样如果用户名已经存在,不用等用户将所有数据都提交就可以给出提示。采用这种方式大大改善了用户体验。下面是用JS获取用户Id然后将其发送给UserValidate.jsp页面,然后通过callback方法接收页面返回的消息并通..._.net查询用户信息ajax

catkin_make 与cmake-程序员宅基地

文章浏览阅读990次。http://blog.csdn.net/zyh821351004/article/details/503884291. catkin_make 与cmake的关系 程序在cmake编译的流程: cmake指令依据你的CMakeLists.txt 文件,生成makefiles文件,make再依据此makefiles文件编译链接生成可执行文件.catkin_make是将..._catkin_make -dcmake_build_type=

基本函数依赖和候选键_5G 通信候选波形的设计和评测解决方案-程序员宅基地

文章浏览阅读336次。利用仿真技术深入分析 5G 通信系统及其波形概述虽然第四代(4G)蜂窝系统——LTE 和 LTE-Advanced——还处在部署进程中,第五代(5G)系统的研发已经开始,5G 技术愿景是“随时随地万物接入”。5G 相比 4G 的一个显著优势是, 5G 能够提供超快(接近 10 Gbps)、连贯和优质的连通性,时延很低(不超过几毫秒),可以支持新的用例和构成物联网(IoT) 的数十亿个传感器。同样重..._数学5g通讯函数

linux 编译 内核模块 头文件,linux/module.h: No such file or directory 内核模块编译过程...-程序员宅基地

文章浏览阅读1.7k次。1、缺少Linux kernel头文件To install just the headers in Ubuntu:sudo apt-get install linux-headers-$(uname -r)To install the entire Linux kernel source in Ubuntu:sudo apt-get install linux-sourceNote that yo..._linux/init.h: no such file or directory

R语言之决策树CART、C4.5算法_c4.5的决策树是怎么画的-程序员宅基地

文章浏览阅读1.6w次,点赞19次,收藏100次。决策树是以树的结构将决策或者分类过程展现出来,其目的是根据若干输入变量的值构造出一个相适应的模型,来预测输出变量的值。预测变量为离散型时,为分类树;连续型时,为回归树。R语言的调用函数rpart(),J48(),prune()_c4.5的决策树是怎么画的