package com.atguigu.java;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.junit.Test;
public class TimeTest {
/*
* Calendar:日历类
*
*/
@Test
public void test4(){
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getClass());
//get()
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//add()
calendar.add(Calendar.DAY_OF_MONTH, -2);
day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//set()
calendar.set(Calendar.DAY_OF_MONTH, 20);
day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//getTime():获取calendar的Date对象
Date date = calendar.getTime();
System.out.println(date);
//
Date date1 = new Date(234235235252L);
calendar.setTime(date1);
System.out.println(date1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
}
/*
* SimpleDateFormat类的用途:
* 1.将指定的字符串类型的日期转换为日期类的对象
*
* 2.“三天打渔两天晒网” 1990-1-1开始执行。 xxxx-xx-xx 打渔?晒网?
*
* 过程一:计算两个日期的毫秒差
* String str = "1990-1-1"---->java.util.Date date1
* ------> long start = date1.getTime();
*
* String str = " xxxx-xx-xx"---->java.util.Date date2
* ------> long end = date2.getTime();
*
*int days = (end - start) / (1000 * 3600 * 24 ) + 1
*
* 过程二:
* 计算出1990-1-1与 xxxx-xx-xx的天数差(包含 xxxx-xx-xx当天):days
* int mod = days % 5;
* if(mod == 1 || mod == 2 || mod == 3)--->打渔
* else if(mod == 4 || mod == 0) --->晒网
*
*
*/
@Test
public void test3() throws ParseException{
String str = "1955-07-14";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
System.out.println(sdf.format(date));
java.sql.Date dateSql = new java.sql.Date(date.getTime());
System.out.println(dateSql);
}
/*
* SimpleDateFormat类
*
* 1.格式化:日期---->字符串
*
*
* 2.解析:字符串---->日期
*/
@Test
public void test2() throws Exception{
SimpleDateFormat sdf = new SimpleDateFormat();
// System.out.println(sdf);
Date date = new Date();
//1.格式化:日期---->字符串
String dateStr = sdf.format(date);
System.out.println(dateStr);//17-6-12 下午4:25
// SimpleDateFormat sdf1 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//1.格式化:日期---->字符串
String dateStr1 = sdf1.format(date);
System.out.println(dateStr1);//2017-06-12 04:29:36
//2.解析:字符串---->日期
Date date1 = sdf.parse("17-6-12 下午4:25");
System.out.println(date1);
System.out.println(date);
Date date2 = sdf1.parse("2017-06-12 04:29:36");
System.out.println(date2);
}
/*
* 2.java.util.Date
* |----java.sql.Date
*
*
* 2.1 java.util.Date:
* ①两个构造器
* ②两个常用方法:toString();long getTime()
*
* 2.2 java.sql.Date
*/
@Test
public void test1(){
//构造器1:Date()
Date date1 = new Date();//获取系统当前时间对应的日期
System.out.println(date1.toString());//Mon Jun 12 16:05:57 GMT+08:00 2017
//返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
System.out.println(date1.getTime());//1497254846855
//构造器2:Date(long millitime):返回指定毫秒数对应的日期
Date date2 = new Date(1497254841855L);
System.out.println(date2);//Mon Jun 12 16:07:21 GMT+08:00 2017
System.out.println(date2.getTime());//1497254841855
System.out.println("******************");
//跟数据库交互时,对应的java类中的Date即为java.sql下的Date.
java.sql.Date date3 = new java.sql.Date(1497254841855L);
System.out.println(date3);//2017-06-12
System.out.println(date3.getTime());
System.out.println("****************");
//练习:如何将一个util.Date对象转换为sql.Date。
Date date4 = new Date(23524234234L);
//错误的:
// java.sql.Date date5 = (java.sql.Date)date4;
// System.out.println(date5);
//正确的:
java.sql.Date date6 = new java.sql.Date(date4.getTime());
System.out.println(date6);
}
//1.System.currentTimeMills():
//返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
}
@Test
public void test1() throws ParseException{
BigInteger bi = new BigInteger("12433241123");
BigDecimal bd = new BigDecimal("12435.351");
BigDecimal bd2 = new BigDecimal("11");
System.out.println(bi);
//System.out.println(bd.divide(bd2));
//原来JAVA中如果用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,
//定义精确到小数点后几位,否则在不整除的情况下,结果是无限循环小数时,就会抛出以上异常。
BigDecimal divide = bd.divide(bd2);
System.out.println(divide);
//传入除数 传入round的模式
System.out.println(bd.divide(bd2,BigDecimal.ROUND_HALF_UP));
//传入除数 传入精度 传入round的模式
System.out.println(bd.divide(bd2,15,BigDecimal.ROUND_HALF_UP));
}