第67集:常用类/Calendar和GregorianCalendar的使用/日期计算
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
注意月份的表示,一月是0,二月是1,以此类推,是12月是11。因为大多数人习惯于使用单词而不是使用数字来表示月份,这样程序也许更易读,父类Calendar使用常量来表示月份:JANUARY, FEBRUARY,等等。
注意星期的表示,星期日是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类的使用
java.io.File类:文件和目录路径名的抽象表示形式。
File类的常见构造方法:
public File(String pathname)
以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。File的静态属性String separator存储了当前系统的路径分隔符。
-
通过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()
-
通过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();//不创建 } }