日期时间总结 java

news2024/11/27 18:50:22

日期时间

  • 1 Date基础
  • 2 SimpleDateFormat
  • 3 currentTimeMillis
  • 4 Calendar
  • 5 时间转化
    • 5.1 date 时间戳
    • 5.2 date String
    • 5.3 cal date
  • 6 其他
  • 7 练习题
    • 题1

1 Date基础

.getYear()
.getMonth() + 1
.getDate() 几号
.toLocaleString() 转换为本地时区
getTime():返回自1970年1月1日00:00:00 GMT以来的毫秒数

 // 获取当前时间:
Date date = new Date();
// 获取年份
int year = date.getYear() + 1900;
System.out.println("今天的年份:"+year); // 必须加上1900  今天的年份:2024
System.out.println("今天的年份:" + date.getYear()); // 必须加上1900  今天的年份:124
// 获取月份
System.out.println("今天的月份:" + date.getMonth() + 1); // 0~11,必须加上1
// 获取日
System.out.println("今天是几号:" + date.getDate()); // 1~31,不能加1
//今天是
// 转换为本地时区:
System.out.println("今天的年份:" + date.toLocaleString()); //今天的年份:2024年4月12日 下午4:09:44
// 转换为String:
//System.out.println("今天的年份:" + date.toString());
// 转换为GMT时区:
//System.out.println("今天的年份:" + date.toGMTString());

2 SimpleDateFormat

yyyy-MM-dd HH-mm-ss
yyyy/MM/dd
yyyy:MM:dd

// 获取当前时间:
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date)); //2024-04-12 16:37:53

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(sdf1.format(date)); //2024/04/12

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy:MM:dd");
System.out.println(sdf2.format(date)); //2024:04:12

M :月份 输出格式 9
MM : 月份 输出格式 09
MMM: 月份 输出格式 September

E MMM dd, yyyy
yyyy MMM dd E

Date date = new Date();
SimpleDateFormat sdff1 = new SimpleDateFormat("E MMM dd, yyyy");
System.out.println(sdff1.format(date)); //周五 4月 12, 2024

SimpleDateFormat sdff2 = new SimpleDateFormat("yyyy MMM dd E");
System.out.println(sdff2.format(date)); //2024 4月 12 周五

3 currentTimeMillis

System.currentTimeMillis()
计算机从1970年1月1日零点(格林威治时区 / GMT + 00:00) 到现在所经历的秒数

long time= System.currentTimeMillis();
System.out.println(time);  //1670677161211
Date thisTime = new Date(time);
System.out.println(thisTime); // Fri Apr 12 16:55:18 CST 2024

4 Calendar

Calendar.getInstance()
.YEAR
.MONTH) + 1
.DAY_OF_MONTH
.DAY_OF_WEEK) -1
.HOUR_OF_DAY
.MINUTE
.SECOND
.MILLISECOND 毫秒
注意下 1~7 分别表示周日、周一…,周六 。

获取当前时间:

// 获取当前时间:
Calendar c = Calendar.getInstance();
int y = c.get(Calendar.YEAR); //年
int m = c.get(Calendar.MONTH) + 1; // 月
int d = c.get(Calendar.DAY_OF_MONTH); // 日
int w = c.get(Calendar.DAY_OF_WEEK) -1;  // 星期
int hh= c.get(Calendar.HOUR_OF_DAY); // 小时 
int mm = c.get(Calendar.MINUTE); // 分
int ss = c.get(Calendar.SECOND); // 秒
int ms = c.get(Calendar.MILLISECOND); // 毫秒
System.out.println(y + "-" + m + "-" + d + " " + w + " " +
hh + ":" + mm + ":" + ss + "." + ms);  // 例如 2024-4-12 5 17:10:48.995

.set(Calendar.YEAR, 2025)
sdf.format(c.getTime())

设置时间:

// 当前时间:
Calendar c = Calendar.getInstance();
// 清除所有:
c.clear();
// 设置2019年:
c.set(Calendar.YEAR, 2025);
// 设置9月:注意8表示9月:
c.set(Calendar.MONTH, 8);
// 设置2日:
c.set(Calendar.DATE, 2);
// 设置时间:
c.set(Calendar.HOUR_OF_DAY, 21);
c.set(Calendar.MINUTE, 22);
c.set(Calendar.SECOND, 23);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(c.getTime())); //2025-09-02 21:22:23

5 时间转化

5.1 date 时间戳

时间戳->date

long s = System.currentTimeMillis();
System.out.println(s); // 1712915178721
Date dattt = new Date(s);
System.out.println(dattt); // Fri Apr 12 17:46:18 CST 2024

.getTime()
date->时间戳

Date date= new Date();
long time = date.getTime();
System.out.println(time); //1712915726040

5.2 date String

df.parse(str)
String->Date对象

SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = "2022年02月20日";
Date date = df.parse(str);
System.out.println(date); // Sun Feb 20 00:00:00 CST 2022

.format(date):将日期转换成字符串
Date-> String

Date datee = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(datee);
System.out.println(str+123); //2024-04-12 18:23:08123

5.3 cal date

cal.getTime()
calendar->Date

Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date);  // Sun Feb 20 00:00:00 CST 2022

.setTime
Date->calendar

Date datee =new Date();
Calendar cal=Calendar.getInstance();
cal.setTime( datee );
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(cal.getTime())); //2024-04-12 18:27:51

6 其他

calendar.getTimeInMills()

7 练习题

题1

在控制台输入一个日期,即可跳转到该月份,输入的那一天,用*号代替
请添加图片描述

请添加图片描述

System.out.println("请输入日期:格式yyyy--MM--dd");
Scanner scanner=new Scanner(System.in);
String str=scanner.nextLine();
System.out.println("   一  二  三  四  五  六  日");
DateFormat dateFormat=new SimpleDateFormat("yyyy--MM--dd");
//将输入日期字符串转换成Date类型,作为calendar的时间参数
Date date = dateFormat.parse(str);
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
//获取输入日期的year,month,day.
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
int day=calendar.get(Calendar.DAY_OF_MONTH);
//获取输入日期的当月的第一天,并将calendar的时间设置为该月1号
Date date2=dateFormat.parse(year+"--"+month+"--"+"1");
calendar.setTime(date2);
//月份为1,3,5,7,8,10,12
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
show(calendar,day,31);
}else if(month==4||month==6||month==9||month==11){//月份为4,6,9,11
show(calendar,day,30);
}else if(isLeap(year)){//2月份,是闰年
show(calendar,day,29);
}else{//2月份,是平年
show(calendar,day,28);
}
}

/**
* 判断输入的年份是否是闰年,闰年返回true,平年返回false.
* @param year
* @return
*/
public static boolean isLeap(int year){
if((year%400==0)||(year%4==0&&year%100!=0)){
return true;
}else{
return false;
}
}
/**
*
* @param calendar  calendar的时间为该月1号
* @param day   输入日期的day值
* @param days  一个月总共有多少天
*/
public static void show(Calendar calendar,int day,int days){
//startDay 表示一个月的第一天是星期几
int startDay=calendar.get(Calendar.DAY_OF_WEEK);
//realDay表示实际是星期几
int realDay=0;
//startDay==1,是周日.
if(startDay==1){
realDay=7;
for(int i=1;i<=6;i++){
    System.out.print("    ");
}
}else{//startDay !=1,不是周日的情况.
//realDay表示真实的周几,比如说,startDay=2,其实是周一;startDay=3,其实是周二.
realDay=startDay-1;
for(int i=1;i<realDay;i++){
    System.out.print("    ");
}
}
for(int i=1;i<=days;i++){
//换行操作
if((i+realDay)%7==1){
    if(i==day){
        System.out.print("   *");
    }else{
        System.out.print(String.format("%4d",i));
    }
    System.out.println("");
}else{
    if(i==day){
        System.out.print("   *");
    }else{
        System.out.print(String.format("%4d",i));
    }
}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git am XXX.patch 文件内容解析

git am XXX.patch 文件内容解析 打补丁的两种方式&#xff1a; 1.patch XXX.patch 2.git am XXX.patch 例如&#xff1a; diff --git a/drivers/crypto/se/ce.c b/drivers/crypto/se/ce.c index e6f68286d4ce6..de1bcb46fbe6b 100644 --- a/drivers/crypto/se/ce.cb/drive…

本地部署开源免费文件传输工具LocalSend并实现公网快速传送文件

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-X4xB3gSR3z2VUfmN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

IDEA 设置类注释模板作者、日期、描述等信息(推荐标准!)

idea注释模版配置 idea作为越来越多程序员使用的开发工具&#xff0c;平时的代码注释也非常的关键&#xff0c;类上注释和方法上注释每次换电脑或者新同事入职都要统一修改&#xff0c;找了网上好多教程都写的乱七八糟的啥都有&#xff0c;为方便统一就自己写一个操作方法&…

【word2pdf】Springboot word转pdf(自学使用)

文章目录 概要整体介绍具体实现官网pom文件增加依赖 遇到的问题本地运行OK&#xff0c;发布到Linux报错还是本地OK&#xff0c;但是Linux能运行的&#xff0c;但是中文乱码 小结 概要 Springboot word 转 pdf 整体介绍 搜了一下&#xff0c;发现了能实现功能的方法有四种 U…

ppt技巧:如何将Word文档大纲中导入到幻灯片中?

在PowerPoint中&#xff0c;将Word文档的大纲导入到新的幻灯片是一种非常实用的技巧。以下是详细的步骤&#xff1a; 首先&#xff0c;需要打开PowerPoint软件并打开原始的幻灯片文件。 在PowerPoint的顶部【开始】菜单栏中&#xff0c;找到并点击“新建幻灯片”按钮&#xff0…

《黑马点评》Redis高并发项目实战笔记(上)P1~P43

P1 Redis企业实战课程介绍 P2 短信登录 导入黑马点评项目 首先在数据库连接下新建一个数据库hmdp&#xff0c;然后右键hmdp下的表&#xff0c;选择运行SQL文件&#xff0c;然后指定运行文件hmdp.sql即可&#xff08;建议MySQL的版本在5.7及以上&#xff09;&#xff1a; 下面这…

本科大学生计算机毕业设计案例:遗失物品信息管理系统

设计需求&#xff1a; 客户需求&#xff1a; 项目所用技术&#xff1a; 后端&#xff1a;springBoot,mybatisPlus,springSecurity,Swagger2 前端&#xff1a;vue-element-admin,elementUi 数据库&#xff1a;mysql&#xff0c;redis 数据库表设计&#xff1a; 关键代码展示&a…

使用geneHapR进行基因单倍型分析(以vcf文件为例)

前记 在群体基因组学研究中&#xff0c;我们常常需要知道一些位点的变异情况&#xff0c;以便于根据对应的表型信息估算这些位点的效应&#xff0c;同时了解这些位点在不同亚群之间的变化情况。这个时候我们就需要进行单倍型分析(Haplotype Analysis)&#xff0c;单倍型分析是研…

第07-1章 计算机网络相关概念

7.1 本章目标 了解网络协议的概念了解网络体系结构熟悉ISO/OSI参考模型以及每一层的功能掌握TCP/IP模型各层的主要协议及其功能熟练掌握IP地址、子网规划等相关内容 7.2 网络协议的概念 7.2.1 概念介绍 &#xff08;1&#xff09;网络协议&#xff1a;计算机网络和分布系统中…

AndroidAutomotive模块介绍(三)CarService服务

前言 上一篇文档总结 Android Automotive 框架的 APP 和 API 部分内容&#xff0c;本篇文档将会继续根据 Android Automotive 框架结构&#xff0c;总结 Framework 层 CarService 服务的内容。 本文档对 Android Automotive Framework 层服务将会按照如下顺序展开描述&#x…

4. Django 探究FBV视图

4. 探究FBV视图 视图(Views)是Django的MTV架构模式的V部分, 主要负责处理用户请求和生成相应的响应内容, 然后在页面或其他类型文档中显示. 也可以理解为视图是MVC架构里面的C部分(控制器), 主要处理功能和业务上的逻辑. 我们习惯使用视图函数处理HTTP请求, 即在视图里定义def…

一、flask入门和视图

run启动参数 模板渲染 后端给前端页面传参 前端页面设置css from flask import Flask, render_template,jsonify# 创建flask对象 app Flask(__name__)# 视图函数 路由route app.route("/") def hello_world():# 响应&#xff0c;返回给前端的数据return "h…

将数学表达式对分子分母先因式分解再约分化简simplify()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将数学表达式 对分子分母 先因式分解 再约分化简 simplify() [太阳]选择题 请问以下输出结果正确的是&#xff1a; from sympy import simplify from sympy.abc import x, y A (x**2 2*x 1)…

第07-2章 TCP/IP模型

7.7 TCP/IP模型详解 7.7.1 简介 应用层的PDU>APDU&#xff08;Application PDU&#xff09; 表示层的PDU>PPDU&#xff08;Presentation PDU&#xff09; 会话层的PDU>SPDU&#xff08;Session PDU&#xff09; 7.7.2 TCP/IP协议体系 &#xff08;1&#xff09;TCP…

【尝试】域名验证:配置github二级目录下的txt文件

【尝试】域名验证&#xff1a;配置github二级目录下的txt文件 写在最前面一、初始化本地仓库二、设置远程仓库1. 远程仓库 URL 没有设置或设置错误添加远程仓库修改远程仓库 2. 访问权限问题3. 仓库不存在步骤 1: 在你的仓库中添加文件步骤 2: 确认GitHub Pages设置步骤 3: 访问…

原型模式:复制对象的智能解决方案

在软件开发过程中&#xff0c;对象的创建可能是一个昂贵的操作&#xff0c;特别是当对象的初始化包括从数据库加载数据、进行IO操作或进行复杂计算时。原型模式是一种创建型设计模式&#xff0c;它通过复制现有的实例来创建新的对象实例&#xff0c;从而避免了类初始化时的高成…

高校实习管理系统的设计与实现(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统高校实习管理系统信息管理难度大&#xff0c;容错率低&am…

llama-factory SFT系列教程 (三),chatglm3-6B 命名实体识别实战

背景 llama-factory SFT系列教程 (一)&#xff0c;大模型 API 部署与使用llama-factory SFT系列教程 (二)&#xff0c;大模型在自定义数据集 lora 训练与部署本文为llama-factory SFT系列教程 第三篇 简介 利用 llama-factory 框架&#xff0c;基于 chatglm3-6B 模型 做命名…

Linux内核之自旋锁:自旋锁初始化之spin_lock_init用法实例(四十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

23、链表-反转链表

思路: 第一种方式还是集合方式&#xff0c;用数组装一下&#xff0c;然后从未到头遍历组装就行 第二种方式&#xff1a; 首先构建一个prenull开始遍历 获取nexthead.nexthead.nextpre,将head节点的next指针指向pre&#xff0c;前驱节点pre来到head位置 prehead&#xff1b;…