java的日期类和随机数类的使用
直接上代码
Date+SimpleDateFormat
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo01 {
public static void main(String[] args) {
Date date = new Date();
//获取1970的时间搓单位毫秒
long time = date.getTime();
//日期格式化的样式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String format = simpleDateFormat.format(date);
System.out.println(format);
try {
//根据字符串获取Date类
Date parse = simpleDateFormat.parse("2020-04-12");
format = simpleDateFormat.format(parse);
System.out.println(parse);
} catch (Exception e) {
e.printStackTrace();
}
}
}
SimpleDateFormat参数字母的含义
G ——年代标志符
y ——年
M ——月
d ——日
h ——时 在上午或下午 (1~12)
H ——时 在一天中 (0~23)
m—— 分
s ——秒
S ——毫秒
E—— 星期
D 一年中的第几天
F 一月中第几个星期几
w 一年中第几个星期
W 一月中第几个星期
a ——上午 / 下午 标记符
k ——时 在一天中 (1~24)
K ——时 在上午或下午 (0~11)
z ——时区
calendar+GregorianCalendar
Date很多是方法多被calendar取代了。
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class CalendarDemo {
public static void main(String[] args) {
Date date = new Date();
Calendar calendar = new GregorianCalendar();
//初始化。默认是当前时间,当前时间可不设
calendar.setTime(date);
//年
System.out.println(calendar.get(Calendar.YEAR));
//月 用0-11代表十二个月份。就零是一月。。。。
System.out.println(calendar.get(Calendar.MONDAY)+1);
//今天是多少号
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//本月有多少天
System.out.println(calendar.getActualMaximum(Calendar.DATE));
//获取星期数。1-7->日-六
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
//时
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
//分
System.out.println(calendar.get(Calendar.MINUTE));
//秒
System.out.println(calendar.get(Calendar.SECOND));
//毫秒
System.out.println(calendar.get(Calendar.MILLISECOND));
System.out.println("================================");
//设置就set。获取就get。可以类比
//设置号数
calendar.set(Calendar.DAY_OF_MONTH,5);
//今天是多少号
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//获取星期数。1-7->日-六
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
}
}
Random
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
Random rand = new Random();
//随机生成[0,1)之间的double类型的数据
System.out.println(rand.nextDouble());
//随机生成int类型允许范围之内的整型数据
System.out.println(rand.nextInt());
//随机生成[0,1)之间的float类型的数据
System.out.println(rand.nextFloat());
//随机生成false或者true
System.out.println(rand.nextBoolean());
//随机生成[0,10)之间的int类型的数据
System.out.println(rand.nextInt(10));
//随机生成[20,30)之间的int类型的数据
System.out.println(20 + rand.nextInt(10));
//随机生成[20,30)之间的int类型的数据(此种方法计算较为复杂)
System.out.print(20 + (int) (rand.nextDouble() * 10));
}
}
作业
根据输入的日期打印日历。就用户输入了2020-04-13.会打印出04月的日历
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 CalendarDemo02 {
public static void main(String[] args) {
System.out.println("输入日期-格式yyyy-MM-dd->如:2020-04-12");
Scanner scanner = new Scanner(System.in);
String time = scanner.next();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date=null;
try {
date = simpleDateFormat.parse(time);
} catch (ParseException e) {
System.out.println("输入有误");
}
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
//记录用户输入的号数
int day = calendar.get(Calendar.DAY_OF_MONTH);
//重第一天开始打印
calendar.set(Calendar.DAY_OF_MONTH,1);
//获取一号是星期几
int week = calendar.get(Calendar.DAY_OF_WEEK);
//获取当前月有多少天
int days = calendar.getActualMaximum(Calendar.DATE);
//打印日历头
System.out.println("日\t一\t二\t三\t四\t五\t六");
//如果一号不是星期日就打印空格
for (int i = 1; i <week; i++) {
System.out.print("\t");
}
//开始打印
for (int i = 1; i <=days; i++) {
//如果是用户输入的天数
if(i==day){
System.out.print("*"+i+"\t");
}else{
System.out.print(i+"\t");
}
//如果打印了了周六就换行
if(calendar.get(Calendar.DAY_OF_WEEK)==7){
System.out.println();
}
calendar.set(Calendar.DAY_OF_MONTH,i+1);
}
}
//控制台
//输入日期-格式yyyy-MM-dd->如:2020-04-12
//2020-04-15
//日 一 二 三 四 五 六
// 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 30
}