【132天】尚学堂高淇Java300集视频精华笔记(67-70)

第67集:常用类/Calendar和GregorianCalendar的使用/日期计算

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

  2. 瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。 

  3. GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

  4. 注意月份的表示,一月是0,二月是1,以此类推,是12月是11。因为大多数人习惯于使用单词而不是使用数字来表示月份,这样程序也许更易读,父类Calendar使用常量来表示月份:JANUARY, FEBRUARY,等等。

  5. 注意星期的表示,星期日是1,星期一是2,以此类推。

package com.test067;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class Test067 {
    public static void main(String[] args){
        Calendar a = new GregorianCalendar();
        
        //设定日期
        a.set(2007, 0, 2, 3, 4, 5);//使用GregorianCalendar类的set方法一次性设置时间。没有设置的参数默认为当前时间
        System.out.println("打印一个GregorianCalendar类:\t"+a);
        
        a.set(2007,Calendar.JANUARY,2,3,4,5);//这次参数用Calendar.JANUARY设置
        System.out.println("打印一个GregorianCalendar类:\t"+a);
        
        a.set(Calendar.YEAR, 2013);//单独设置某一项参数
        System.out.println("打印Calendar类的YEAR选项值:\t"+a.get(Calendar.YEAR));
        System.out.println("打印Calendar类YEAR常量的默认值:\t"+Calendar.YEAR);//
        
        
        //得到日期
        int year = a.get(Calendar.YEAR);
        System.out.println("输出得到的int型年份"+year);
        
        //Calendar.Date和Calendar.DAY_OF_MONTH同义。
        
        //日期计算
        a.add(Calendar.YEAR,30);
        System.out.println("打印增加30年后的年份:\t"+a.get(Calendar.YEAR));
        
        a.add(Calendar.MONTH, 30);//12个月为一个循环
        System.out.println("打印增加30月后的月份:\t"+a.get(Calendar.MONTH));
        
        
        //日期对象向时间对象转化
        Calendar c = new GregorianCalendar();
        Date b = c.getTime();//使用GregorianCalendar类的getTime方法返回一个Date对象
        System.out.println("打印一个Date类:\t"+b);
        
        //时间对象向日期对象转化
        Date d = new Date();
        Calendar e = new GregorianCalendar();
        e.setTime(d);
        System.out.println("打印一个由Date类的对象转换而来的GregorianCalendar类对象:\t"+e);
        
        //日期对象向long类型转化
        long millSecond = c.getTimeInMillis();//返回这个Calendar对象的毫秒表示
        System.out.println("打印一个long类型:\t"+millSecond);
        
        long g = System.currentTimeMillis();
        System.out.println("打印当前时间的long类型表示:\t"+g);    
    }
}

第68-69集:常用类可视化日历程序制作

今天这节课给我的冲击很大,一个我完全没有思路的项目,高老师通过一点一点的引导我们行动+改进,竟然做慢慢做出来了!所以说,任何事情,最有效率的办法从来不是什么先思考后行动。一边行动一边思考一边改进才是最有效率的办法,当然,这肯定不是最舒服的办法。

/**
 * 思路总结:
 *  1.第一步先通过具体行动把骨架建起来。
 *  2.根据题意,利用日历知识解决实际问题,三个知识点
 *     a)本月的第一天是星期几,确定了前面的空格的个数。int w=Calendar.get(Calendar.Date)
 * 
 *  b)本月的最后一天是30还是31,还是28,决定的循环的临界值。 c)输入的字符串通过new
 *         simpleDateFormat("yyyy-MM-dd").parse(str)变成日期对象date。
        有Calendar c =new GregorianCalendar();c.setTime(date)方法把日期对象变成日历。
 */

package com.test068;

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 Test068 {
    public static void main(String[] args){
        System.out.println("请输入日期(按照格式:2030-3-10):");
        
        Scanner scanner = new Scanner(System.in);
        String temp = scanner.nextLine();
        
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        try {
            
            Date date = format.parse(temp);
            Calendar calendar = new GregorianCalendar();
                        
            calendar.setTime(date);
            int day = calendar.get(Calendar.DATE);
            calendar.set(Calendar.DATE,1);
            int maxDate = calendar.getActualMaximum(Calendar.DATE);
            
            System.out.println("日\t一\t二\t三\t四\t五\t六");

            for(int i = 1;i<calendar.get(Calendar.DAY_OF_WEEK);i++){
                System.out.print("\t");
            }
            
            for(int i =1;i<=maxDate;i++){
                
                if(i==day){
                    System.out.print("*");
                }
                
                System.out.print(i+"\t");
                int w = calendar.get(Calendar.DAY_OF_WEEK);
                if(w==Calendar.SATURDAY){
                    System.out.println();
                }
                calendar.add(Calendar.DATE,1);
            }
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

第70集:常用类_file类的使用

  1. java.io.File类:文件和目录路径名的抽象表示形式。

  2. File类的常见构造方法:public File(String pathname)以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。

  3. File的静态属性String separator存储了当前系统的路径分隔符。 

  4. 通过File对象可以访问文件的属性。

    public boolean canWrite()
    public boolean exists()
    public boolean isDirectory()
    public boolean isFile()
    public boolean isHidden()
    public long lastModified()
    public long length()
    public String getName()
    public String getPath()
  5. 通过File对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)。

    public boolean createNewFile()throws IOException
    public boolean delete() 
    public boolean mkdir(), mkdirs()

    示例代码

    
    package com.test070;
    
    import java.io.File;
    import java.io.IOException;
    
    public class Test070 {
        public static void main(String[] args){
            /**
             * File文件类:1.代表文件 2.代表目录
             */
            
            File a = new File("/Users/wangtao/Desktop/aaa.txt");
            File a2 = new File("/Users/wangtao/Desktop/");
            File a3 = new File(a2,"aaa.txt");
            File a4 = new File(a2,"bbb.txt");
            File a5 = new File("/Users/wangtao/Desktop/AAA/BBB/CCC");
            File a6 = new File("/Users/wangtao/Desktop/AAA/DDDD");
            
            try {
                a3.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            if(a.isFile()){
                System.out.println("File!");
            }
            
            if(a2.isDirectory()){
                System.out.println("Directory");
            }
            
            if(a3.isFile()){
                System.out.println("File!");
            }
            
            a5.mkdirs();//直接创建
            a6.mkdir();//不创建
        }
    }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值