Java中关于Date等日期类的简单使用

摘要:
DateDate类不常用,很多方法被废弃了,常用它的两个构造方法来new一个Date对象。//Date对象转换为String对象DateFormatd3=newSimpleDateFormat;//定义日期格式,其中y、M、d、h、m、s等都代表固定的含义,可以参考API文档Stringstr=d3.format;System.out.println;//输出2019年07月13日10:16:37//String对象转换为Date对象DateFormatd4=newSimpleDateFormat;//定义日期格式Datedate=d4.parse;System.out.println;//输出ThuFeb2019:20:40CST1997日期格式参照表GregorianCalendarCalendar是一个抽象类,常用其子类GregorianCalendar。

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(newDate());
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

日期格式参照表

Java中关于Date等日期类的简单使用第1张

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 = newGregorianCalendar();
        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 = newGregorianCalendar();
        Date date2 = c3.getTime();  //通过getTime转换为Date对象
System.out.println(date2);
        Calendar c4 = newGregorianCalendar();
        c4.setTime(new Date()); //通过setTime转换为Calendar对象

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

importjava.text.DateFormat;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.GregorianCalendar;
importjava.util.Scanner;
public classCalendarTest {
    public static void main(String[] args) throwsParseException {
        Scanner reader = newScanner(System.in);
        String str =reader.nextLine();
        //获取日期类
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date =dateFormat.parse(str);
        Calendar calendar = newGregorianCalendar();
        calendar.setTime(date);
        int currDay =calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("日		"+"一		"+"二		"+"三		"+"四		"+"五		"+"六		");
        calendar.set(Calendar.DAY_OF_MONTH,1);
        for (int i = 1; i < calendar.get(Calendar.DAY_OF_WEEK); i++) {
            System.out.print("		");
        }
        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)+"*"+"		");
            }else{
                System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"		");
            }
            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等日期类的简单使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇flask_jwt_extended 4.0学习spark on yarn提交任务时报ClosedChannelException解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Consul--客户端访问Consul服务

根据上一篇Consul服务的注册和发现,那么客户端如何去访问我们的Consul服务?其实客户端访问Consul实际上是访问Consul的服务实例。客户端自己可以实现对Consul服务实例的轮训,每次刷新端口都会发生改变,由于客户端访问Consul采用的轮训策略,所以每次刷新Consul的服务实例都会发生改变。 下面就直接上客户端访问Consul服务实例的代...

swiper横向轮播(兼容IE8)

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <link rel="stylesheet"href="idangerous.swiper.cs...

JAVA Swing开发单机版项目

一、序   最近公司做的项目里出现了一个新的需求,项目大部分是为金融业定制开发的数据集成平台,包括数据的采集,处理,使用。   数据的采集方式不固定,有机构化数据,有非结构话数据,还有附件等其它文件形式。   对于采集端,大部分要求具备硬件服务器架设能力,这时就出现了一个问题,有些采集端是不具备硬件服务器架设能力的,或者主观上不愿意架设,   要求公司拿...

hadoop26----netty,多个handler

k客户端: package cn.itcast_03_netty.sendorder.client; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; im...

RocketMQ消息至少一次(At least Once)投递和消费

至少一次(At least Once)指每个消息必须投递一次。Consumer先Pull消息到本地,消费完成后,才向服务器返回ack,如果没有消费一定不会ack消息,所以RocketMQ可以很好的支持此特性。 生产者 在同步非顺序投递的时候,每次都是轮询到不同的队列: Message message = new Message("topic...

关于Android中的三级缓存

三级缓存的提出就是为了提升用户体验。当我们第一次打开应用获取图片时,先到网络去下载图片,然后依次存入内存缓存,磁盘缓存,当我们再一次需要用到刚才下载的这张图片时,就不需要再重复的到网络上去下载,直接可以从内存缓存和磁盘缓存中找,由于内存缓存速度较快,我们优先到内存缓存中寻找该图片,如果找到则运用,如果没有找到(内存缓存大小有限),那么我们再到磁盘缓存中去找...