Date

Date类不常用,很多方法被废弃了,常用它的两个构造方法来new一个Date对象。

Date d1 = new Date();   //不传任何参数,代表当前时间点
System.out.println(d1); //输出
Sat Jul 13 09:51:50 CST 2019
//在Java中以1970年1月1日 00:00:00为时间原点,由于时区问题,祖国时间是8:00:00
Date d2 = new Date(4000); //传入一个long型数值,表示在时间原点之后
System.out.println(d2); //输出,时间过了4秒
Thu Jan 01 08:00:04 CST 1970
SimpleDateFormat
DateFormat是一个抽象类,常用它的子类SimpleDateFormat;作用:作为Date对象和String对象的中介,用于Date对象和String对象的相互转换。
//Date对象转换为String对象
DateFormat d3 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss"); //定义日期格式,其中y、M、d、h、m、s等都代表固定的含义,可以参考API文档
String str = d3.format(new Date());
System.out.println(str); //输出
2019年07月13日 10:16:37
//String对象转换为Date对象
DateFormat d4 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss"); //定义日期格式
Date date = d4.parse("1997年2月20日 19:20:40");
System.out.println(date); //输出
Thu Feb 20 19:20:40 CST 1997

日期格式参照表

GregorianCalendar

Calendar是一个抽象类,常用其子类GregorianCalendar。作用:设置日历信息,得到日历信息,日期计算,和Date对象相互转换。
        Calendar c1 = new GregorianCalendar();  //直接定义默认当前时间点
c1 = new GregorianCalendar(2018,10,20); //可以具体定义到时分秒
System.out.println(c1); //直接输出许多信息,可以从里面筛选出日期信息
//获取信息
int year = c1.get(Calendar.YEAR);
int month = c1.get(Calendar.MONTH); //用0-11表示数字,0表示一月,11表示十二月
int day = c1.get(Calendar.DATE);
int hour = c1.get(Calendar.HOUR);
int minute = c1.get(Calendar.MINUTE);
int seconds = c1.get(Calendar.SECOND);
System.out.println(year+"年"+month+"月"+day+"日 "+hour+":"+minute+":"+seconds); //输出
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=?,YEAR=2018,MONTH=10,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=20,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
2018年10月20日 0:0:0
        //设置信息
Calendar c2 = new GregorianCalendar();
c2.set(Calendar.YEAR,1997);
c2.set(Calendar.MONTH,2);
c2.set(Calendar.DATE,20); //日期的计算
c2.add(Calendar.YEAR,22); //往后22年
System.out.println(c2.get(Calendar.YEAR)+"年"+Calendar.MONTH+"月"+Calendar.DATE+"日"); //输出
2019年2月5日
        //Calendar对象和Date对象之间的转换
Calendar c3 = new GregorianCalendar();
Date date2 = c3.getTime(); //通过getTime转换为Date对象
System.out.println(date2); Calendar c4 = new GregorianCalendar();
c4.setTime(new Date()); //通过setTime转换为Calendar对象

打印可视化日历的一个简单例子:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner; public class CalendarTest {
public static void main(String[] args) throws ParseException {
Scanner reader = new Scanner(System.in);
String str = reader.nextLine();
//获取日期类
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse(str);
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int currDay = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("日\t\t"+"一\t\t"+"二\t\t"+"三\t\t"+"四\t\t"+"五\t\t"+"六\t\t");
calendar.set(Calendar.DAY_OF_MONTH,1);
for (int i = 1; i < calendar.get(Calendar.DAY_OF_WEEK); i++) {
System.out.print("\t\t");
} int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); //本月天数
for (int i = 0; i < days; i++) {
if(calendar.get(Calendar.DAY_OF_MONTH)==currDay){
System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"*"+"\t\t");
}else{
System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"\t\t");
}
if(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
System.out.println();
}
calendar.add(Calendar.DAY_OF_MONTH,1); //天数加1
}
}
}
2000-2-20
日 一 二 三 四 五 六
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20* 21 22 23 24 25 26
27 28 29

Java中关于Date等日期类的简单使用的更多相关文章

  1. JAVA中使用Date和SimpleDateFromat类表示时间

    转自:https://www.imooc.com/code/2335 仅做个人学习保存之用,侵删! 在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Dat ...

  2. 【java】JDK1.8时间日期库 新特性 所有java中时间Date的使用

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用java 8的这套API.Java对日期, ...

  3. Java中必须了解的常用类

    1.Java的包装类 基本数据类型我们都很熟悉,例如:int.float.double.boolean.char等,基本数据类型不具备对象的特征,不能调用方法,一般能实现的功能比较简单,为了让基本数据 ...

  4. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

  5. Java中的集合和常用类

    Java中的常用类: ▪ Object类 ▪ Math类 ▪ String类和StringBuffer类(字符串) ▪ 8种基本类型所对应的包装类 ▪ java.util包中的类——Date类 Obj ...

  6. JAVA基础——Java 中必须了解的常用类

    Java中必须了解的常用类 一.包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的,比如基本类型不 ...

  7. Java中的Date Time 与SQL Server 2005里的Datetime 之间的交互

    Preface Environment:Platform: Windows XPLanguage: Java 1.5IDE: MyEclipse 6.0.1Database: SQL Server 2 ...

  8. Java中的Date类型无法赋值给数据库的datetime类型

    因为Java中new Date()的结果是"Thu Aug 27 19:03:54 CST 2020",而mysql中的datetime不接受这样的日期格式,插入数据会报错. 解决 ...

  9. Java中是否可以调用一个类中的main方法?

    前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...

随机推荐

  1. mysql 的主从

    MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQ ...

  2. robotframework调用外部python多次运行拿到的都是同一个值

    外部python是一个爬虫,爬取的内容的定义没有放入函数中.导致一次爬取多次使用的情况出现. 第一版函数如下: 改版后:

  3. GlobalLock锁定一个全局内存对象

    GlobalLock BAIPro

  4. Window10的激活步骤

    1. 首先,我们先查看一下Win10正式专业版系统的激活状态: 点击桌面左下角的“Windows”按钮,从打开的扩展面板中依次点击“设置”-“更新和安全”,并切换到“激活”选项卡,在此就可以查看到当前 ...

  5. Web Api 接口测试工具:Swagger

    前言:WebApi接口开发完毕后,交付给前端人员或手机端开发者时接口说明文档是必不可少的配套设备,如果公司流程不规范大家使用口口相传的交接方式,而且没有改进的欲望,那你可以到此为止了.Swagger是 ...

  6. 【洛谷P1417】烹调方案 贪心+背包dp

    题目大意:一共有 n 件食材,每件食材有三个属性,ai,bi和ci,如果在t时刻完成第i样食材则得到ai-t*bi的美味指数,用第i件食材做饭要花去ci的时间.众所周知,gw的厨艺不怎么样,所以他需要 ...

  7. 51 Nod 1678 lyk与gcd(容斥原理)

    1678 lyk与gcd  基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 这天,lyk又和gcd杠上了. 它拥有一个n个数的数列,它想实现两种操作 ...

  8. 苹果cms模板文件不存在:public/jump.html

    1,模板文件不存在很显然就是模板缺少文件导致,缺少什么文件一般都会提示.(如上图)点击首页的时,有的能进入播放页  有的提示(上图) 模版文件不存在:public/jump.html 通过查询苹果cm ...

  9. 接口自动化request库入门

    requests库7个主要方法 r= requsts.get(),主要属性: r.raise_for_status()方法内部判断r.status_code是否等于200不需要增加额外的if语句,该语 ...

  10. [CSP-S模拟测试]:彩球问题(记忆化搜索)

    题目传送门(内部题91) 输入格式 第一行一个正整数$N$,表示颜色种类数. 第二行$N$个正整数$k[i],k[i]$表示第$i$种颜色的数量$(1\leqslant k[i]\leqslant 3 ...