Java小白一文带你了解Java中的三代日期类

日期类

第一代日期类

Data

精确到毫秒,代表特定的瞬间

SimpleDateFormat

格式和解析日期的具体类;它允许进行格式化(日期–>文本)、解析(文本–>日期)和规范化

//第一代日期类
 public static void main(String[] args) throws ParseException {
//        import java.sql.Date;
//        注意,上面的这个包是数据库中的Date,引包的时候要留意,别引错

//        获取当前系统时间
        Date date1 = new Date();//当前日期是:Mon Aug 26 21:33:59 CST 2024
        System.out.println("当前日期是:"+date1);
        //通过指定毫秒数得到时间
        Date date2 = new Date(643643);
        System.out.println(date2);//Thu Jan 01 08:10:43 CST 1970
        //获取某个时间对应的毫秒数
        System.out.println(date1.getTime());//1724679239617

//      1.创建SimpleDateFormat 对象,可以指定相应的格式
//      2.这里的格式是使用的字母是规定好的,不能乱写
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E" );
        String format = sdf.format(date1);//format:将日期转换成指定格式的字符串
        //此时的输出就符合预期了
        System.out.println("当前日期是="+format);//当前日期是=2024年08月26日 09:41:28 星期一


        //1.可以把一个格式化的String转成对应的Date
        //2.得到Date 仍然在输出时,还是按照国外的形式,如果希望指定格式输出,需要转换
        //3.在把String-->Date s 字符串的sdf格式一定要跟你上面给的String格式相同,
        //     否则会报错,抛出一个转换异常ParseException: Unparseable date: "2003年11月10 11:10:02 星期五"
        String s = "2003年11月10日 11:10:02 星期五";
        Date parsed = sdf.parse(s);
        System.out.println("parse = "+parsed);//parse = Mon Nov 10 11:10:02 CST 2003
        //转换
        System.out.println("转回原来的看着顺眼的格式parse= "+sdf.format(parsed));
        //转回原来的看着顺眼的格式parse= 2003年11月10日 11:10:02 星期一


    }
    //顺便补充说明下diagram中的properties的含义
    //写了setXXX或者getXXX的方法,diagram中会将XXX识别为属性field

第二代日期类

Calendar类

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

//第二代日期类
        /**
         * 1.Calendar是一个抽象类,并且构造器是private
         * 2.可以通过getInstance()来获取实例
         * 3.提供大量的方法和字段提供给程序员
         * 4.Calendar没有专门的格式化方法,所以需要程序员自己来组合显示输出
         * 5.如果我们需要按照24小时来获取时间;  Calendar.HOUR ==改成=> Calendar.HOUR_OF_DAY
         */
        Calendar c = Calendar.getInstance();//创建日历类对象
        System.out.println(c);//java.util.GregorianCalendar[time=1724681049591,
        // areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.
        // calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,
        // useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,
        // minimalDaysInFirstWeek=1,ERA=1,YEAR=2024,MONTH=7,WEEK_OF_YEAR=35,
        // WEEK_OF_MONTH=5,DAY_OF_MONTH=26,DAY_OF_YEAR=239,DAY_OF_WEEK=2,
        // DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=4,
        // SECOND=9,MILLISECOND=591,ZONE_OFFSET=28800000,DST_OFFSET=0]

        //获取日历对象的某个日历字段
        System.out.println("年: "+c.get(Calendar.YEAR));//年: 2024
        //Calendar返回月的时候,是按照0开始编号的,所以要+1
        System.out.println("月: "+(c.get(Calendar.MONTH)+1));//月: 8  注意括号
        System.out.println("日: "+c.get(Calendar.DAY_OF_MONTH));//日: 26
        System.out.println("时: "+c.get(Calendar.HOUR));//时: 10
        System.out.println("分: "+c.get(Calendar.MINUTE));//分: 9
        System.out.println("秒: "+c.get(Calendar.SECOND));//秒: 25



        //Calendar没有专门的格式化方法,所以需要程序员自己来组合显示
        System.out.println(c.get(Calendar.YEAR)+"年-"+(c.get(Calendar.MONTH)+1)+"月-"+c.get(Calendar.DAY_OF_MONTH)+"日");
        //2024年-8月-26日

第三代日期类

前面两代日期不足分析;

JDK1.0中包含了一个Java.util.Date类,但是它的大多数方法已经在JDK1.1引入了

Calendar类之后被弃用了,而Calendar也存在问题:

  • 可变性:像日期和时间这样的类应该是不可变的
  • 偏移性:Date中的年份是从1990开始的,而月份是都从0开始的
  • 格式化:格式化只对Date有用,Calendar则不行
  • 此外,它们也不是线程安全的;不能处理闰秒等(每隔2天,多出1s)
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark是一个快速通用的集群计算框架,它可以处理大规模数据,并且具有高效的内存计算能力。Spark可以用于各种计算任务,包括批处理、流处理、机器学习等。本文将了解Spark计算框架的基本概念和使用方法。 一、Spark基础概念 1. RDD RDD(Resilient Distributed Datasets)是Spark的基本数据结构,它是一个分布式的、可容错的、不可变的数据集合。RDD可以从Hadoop、本地文件系统等数据源读取数据,并且可以通过多个转换操作(如map、filter、reduce等)进行处理。RDD也可以被持久化到内存,以便下次使用。 2. Spark应用程序 Spark应用程序是由一个驱动程序和多个执行程序组成的分布式计算应用程序。驱动程序是应用程序的主要入口点,它通常位于用户的本地计算机上,驱动程序负责将应用程序分发到执行程序上并收集结果。执行程序是运行在集群节点上的计算单元,它们负责执行驱动程序分配给它们的任务。 3. Spark集群管理器 Spark集群管理器负责管理Spark应用程序在集群的运行。Spark支持多种集群管理器,包括Standalone、YARN、Mesos等。 二、Spark计算框架使用方法 1. 安装Spark 首先需要安装Spark,可以从Spark官网下载并解压缩Spark安装包。 2. 编写Spark应用程序 编写Spark应用程序通常需要使用Java、Scala或Python编程语言。以下是一个简单的Java代码示例,用于统计文本文件单词的出现次数: ```java import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import java.util.Arrays; import java.util.Map; public class WordCount { public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("WordCount").setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> lines = sc.textFile("input.txt"); JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator()); Map<String, Long> wordCounts = words.countByValue(); for (Map.Entry<String, Long> entry : wordCounts.entrySet()) { System.out.println(entry.getKey() + " : " + entry.getValue()); } sc.stop(); } } ``` 3. 运行Spark应用程序 将编写好的Spark应用程序打包成jar包,并通过以下命令运行: ```bash spark-submit --class WordCount /path/to/wordcount.jar input.txt ``` 其,--class参数指定应用程序的主类,后面跟上打包好的jar包路径,input.txt是输入文件的路径。 4. 查看运行结果 Spark应用程序运行完毕后,可以查看应用程序的输出结果,例如上述示例的单词出现次数。 以上就是Spark计算框架的基本概念和使用方法。通过学习Spark,我们可以更好地处理大规模数据,并且提高计算效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值