14.java Date和calendar,Math类,System类

//1.创建Date对象
Date date1 = new Date();
System.out.println(date1); //输出 Fri Mar 26 19:15:09 CST 2021
//2.获取当前系统时间的毫秒值
long time = date1.getTime();
System.out.println(time); // 输出 1616757399810
//3.创建一个指定的时间
Date date2 = new Date(1616757399810L);
System.out.println(date2); //输出 Fri Mar 26 19:16:39 CST 2021
//4.创建Calendar对象
Calendar ins = Calendar.getInstance();
System.out.println(ins);
/**
* 输出:java.util.GregorianCalendar[time=1616757696866,areFieldsSet=true,areAllFieldsSet=true,lenient=true,
* zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,
* transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=2,
* WEEK_OF_YEAR=13,WEEK_OF_MONTH=4,DAY_OF_MONTH=26,DAY_OF_YEAR=85,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=4,
* AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=21,SECOND=36,MILLISECOND=866,ZONE_OFFSET=28800000,DST_OFFSET=0]
*/
//由于在java里面月份是0到11的,所以上面的月份是MONTH=2,表示现在是3月份
//5.获取Calendar对象的年月日时分秒
int year = ins.get(Calendar.YEAR);
int month = ins.get(Calendar.MONTH);
int day = ins.get(Calendar.DATE);
int hour = ins.get(Calendar.HOUR);
int minute = ins.get(Calendar.MINUTE);
int second = ins.get(Calendar.SECOND);
System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");
/*输出:2021年3月26日7时32分57秒*/
//6.将时间设置成2022年2月2日
ins.set(Calendar.YEAR,2022);
int year1 = ins.get(Calendar.YEAR);
ins.set(Calendar.MINUTE,2);
int month1 = ins.get(Calendar.MONTH);
ins.set(Calendar.DATE,2);
int day1 = ins.get(Calendar.DATE);
System.out.println(year1+"年"+month1+"月"+day1+"日"); // 输出 2022年2月2日
//7.将时间设置成2023年3月1日
ins.set(2023, 3, 1);
int year2 = ins.get(Calendar.YEAR);
System.out.println(year2);  //输出 2023
 /**
-创建 SimpleDateFormat 对象时必须指定转换格式。
-转换格式区分大小写,yyyy 代表年份,MM 代表月份,dd 代表日期,HH 代表 24 进制的小时,hh 代表 12 进制的小时,mm 代表分钟,ss 代表秒。
 创建显示日期格式为:yyyy-MM-dd HH:mm:ss的对象
 */
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
   //1、日期转字符串
   //创建Calendar对象
   Calendar calendar = Calendar.getInstance();
   //获取当前系统时间
   Date date = calendar.getTime();
   //将当前系统时间进行按yyyy-MM-dd HH:mm:ss进行格式化输出
   String dateStringParse = sdf.format(date);
   System.out.println(dateStringParse);   //输出当前系统时间:2021-04-03 02:06:16
   //2、字符串转日期
   //字符串格式的日期时间
   String dateString = "2017-12-20 14:02:08";
   //转换成日期格式
   Date dateParse = sdf.parse(dateString);
   System.out.println(dateParse);    // Wed Dec 20 14:02:08 CST 2017
} catch (ParseException e) {
   e.printStackTrace();
}
/**
中文的日期还可以这样的格式输出:yyyy年MM月dd日 HH时mm分ss秒
按yyyy-MM-dd HH:mm:ss格式输出当前系统时间
*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String current = sdf.format(System.currentTimeMillis());
System.out.println(current);  //输出当前系统时间: 2021-04-03 02:16:33
Date date = new Date();
DateFormat df1 = DateFormat.getDateInstance();
System.out.println(df1.format(date));  //输出:2021年4月3日
DateFormat df2 = DateFormat.getDateTimeInstance();
System.out.println(df2.format(date)); //输出:2021年4月3日 上午2:29:33
DateFormat df3 = DateFormat.getTimeInstance();
System.out.println("只显示出时分秒:"+df3.format(date)); //输出只显示出时分秒:上午2:29:33
DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); 
System.out.println("显示日期,周,上下午,时间(精确到秒):"+df4.format(date));  //输出显示日期,周,上下午,时间(精确到秒): 2021年4月3日星期六 中国标准时间 上午2:29:33
DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); 
System.out.println("显示日期,上下午,时间(精确到秒):"+df5.format(date));  //输出显示日期,上下午,时间(精确到秒): 2021年4月3日 CST 上午2:29:33
DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT); 
System.out.println("显示日期,上下午,时间(精确到分):"+df6.format(date));  //输出显示日期,上下午,时间(精确到分): 2021/4/3 上午2:29
DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM); 
System.out.println("显示日期,时间(精确到分):"+df7.format(date)); //输出显示日期,时间(精确到分):2021年4月3日 上午2:29:33
//计算2021-03-03 11:11:11至今间隔多少天
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = "2021-03-03 11:11:11";
Calendar calendar = Calendar.getInstance();
long nowDate = calendar.getTime().getTime(); //Date.getTime() 获得毫秒型日期
try {
	long specialDate = sdf.parse(dateString).getTime();
	long betweenDate = abs((specialDate - nowDate) / (1000 * 60 * 60 * 24)); //计算间隔多少天,则除以毫秒到天的转换公式
	System.out.print(betweenDate);
} catch (ParseException e) {
e.printStackTrace();
}
//求出两个日期相差多少小时,分钟,毫秒
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1 = df.parse("2017-12-20 12:19:19");
Date d2 = df.parse("2017-12-20 11:40:34");
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
long ns = 1000;
// 获得两个时间的毫秒时间差异
long diff = d1.getTime() - d2.getTime();
// 计算差多少天
long day = diff / nd;
// 计算差多少小时
long hour = diff % nd / nh;
// 计算差多少分钟
long min = diff % nd % nh / nm;
// 计算差多少秒//输出结果
long sec = diff % nd % nh % nm / ns;
System.out.println(day + "天" + hour + "小时" + min + "分钟"+ sec + "秒");  //输出:0天0小时38分钟45秒
//Math类:自然对数的底数是E,是一个常量,圆周率:PI
@Test
public void test4(){
System.out.println(Math.abs(-88)); //输出绝对值:88
System.out.println(Math.ceil(12.34)); //向上输出:13.0
System.out.println(Math.ceil(12.56)); //向上输出:13.0
System.out.println(Math.round(12.34));  //输出:12  四舍五入
System.out.println(Math.round(12.56));  //输出:13
System.out.println(Math.max(23, 77)); //取最大值:77
System.out.println(Math.min(23, 77));  //取最小值:23
System.out.println(Math.pow(2.0, 3.0)); //求出2的3次方=8
System.out.println(Math.random()); //输出0-1之间的随机数:0.7961397464788406
System.out.println(Math.random()*100); //输出0-100之间的随机数:83.77992943321254
}
System.exit(0);//终止当前的虚拟机运行

@Test
public void test5() {
System.out.println(System.currentTimeMillis()); //获取当前系统时间的毫秒值:1618147230411
System.out.println(System.currentTimeMillis() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年"); //输出当前时间经过了多少年:51.3111166609589年

//常用来计算运行时间用的方法,从这里开始计时
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
   System.out.println(i);
}
//从这里结束计时
long end = System.currentTimeMillis();
System.out.println("程序一共运行了:"+(end-start)+"毫秒"); //输出:程序一共运行了:1945毫秒
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡启行

您的鼓励将是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值