day30 日期转换

一:Date

Date类: 这个类是java.util.Date

  • getTime() : 获取内部维护的long值

Date date = new Date();
long time = date.getTime();
  • setTime():按照指定的long值(表示的时间)设置Date表示的时间

time += 60*60*24*1000;
date.setTime(time);
  • before(): 此时间是否在指定时间之前

          date1.before(date2)             1在2之前吗?

  • after():此时间是否在指定之间之后

二:Calendar

Calendar类:这个类是java.util包下的类,是JDK1.2推出的用于替换Date类的,但是在实际开发中我们还是使用Date类

    和Date对象相互转换

  • getTime() : 获取当前系统时间的Date对象

Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
long time = date.getTime();
  • setTime(): 将当前的calendar按照指定Date时间进行设置

Date beforeDay = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(beforeDay);

    创建当前时区实例对象 向上造型

         Calendar c = Calendar.getInstance();

     设置对象的具体值  get set 方法的调用  

        年月日时分秒:如图

 
 

Date time = calendar.getTime();

calendar.setTime(time);//将date日期数据转化为calendar类型、

c.get(Calendar.HOUR_OF_DAY);
c.get(Calendar.MINUTE);
c.get(Calendar.SECOND);
c.get(Calendar.DAY_OF_WEEK) 
c.get(Calendar.DATE)
c.get(Calendar.MONTH)+1 
add方法
c.set(Calendar.YEAR,Calendar.YEAR+3);
等同c.add(Calendar.YEAR,3)

三点五 作业练习

/**
*随机大小写六位数 大小写英文字符数字
*
*/ 
public class Test {
    public static void main(String[] args) {
        Random random = new Random();

        StringBuilder m = new StringBuilder() ;
        for (int i = 0; i < 6; i++) {
            char a = (char) ('a'+random.nextInt(26));
            char a1 = (char) ('A'+random.nextInt(26));
            int  a2 = (int)(Math.random()*9);
            int a3 = random.nextInt(11);
            if (a3 <= 3){
                m.append(a);
            }else
            if (a3 <= 6){
                m.append(a1);
            }else
            if (a3 <= 9){
                m.append(a2);
            }
        }
        System.out.println(m);


    }
}
/**
 * 输入商品生产日期  保质天数
 * 促销日期是往前一周的周三
 * 2001-02-18
 * 11
 */
public class Test03 {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入生产日期");
            System.out.println("输入保质日期");
            String births = scanner.nextLine();
//            String sells = scanner.next();
            SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd");
            Date birth = s1.parse(births);
//            Date sell = s1.parse(sells);

            int sells = scanner.nextInt();

            //先算出过期日期
            long expiredDays = birth.getTime()+sells*1000*24*60*60;//毫秒值
            Date expiredDay = new Date();
            expiredDay.setTime(expiredDays);

            //过期周x日到前一周周x 的日期
            Date beforeDay = new Date();
            long beforeDays  = expiredDays -  7L*1000*60*60*24;
            beforeDay.setTime(beforeDays);

            //周x到周三的日期
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(beforeDay);
            calendar.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY);
            System.out.println(calendar);

            Date time = calendar.getTime();
            String str = s1.format(time);
            System.out.println(str);


        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

/**           两种方法
 * 输入商品生产日期  保质天数
 * 促销日期是往前一周的周三
 * 2001-02-18
 * 11  
 */
public class Test03 {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入生产日期");
            System.out.println("输入保质日期");
            String births = scanner.nextLine();
//            String sells = scanner.next();
            SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd");
            Date birth = s1.parse(births);
//            Date sell = s1.parse(sells);

            int sells = scanner.nextInt();

            //先算出过期日期
            long expiredDays = birth.getTime()+sells*1000*24*60*60;//毫秒值
            Date expiredDay = new Date();
            expiredDay.setTime(expiredDays);

            //过期周x日到前一周周x 的日期
            Date beforeDay = new Date();
            long beforeDays  = expiredDays -  7L*1000*60*60*24;
            beforeDay.setTime(beforeDays);

            //周x到周三的日期
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(beforeDay);
            calendar.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY);
            System.out.println(calendar);

            Date time = calendar.getTime();
            String str = s1.format(time);
            System.out.println(str);


        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}



/**
 * 计算促销日期
 * 促销日期为该商品过期日前一周的周三
 * <p>
 * 程序启动动,要求用户输入一个商品的生产日期,以及保质期天数
 * 然后经过处理后输出该商品的促销日期
 * <p>
 * 日期格式:yyyy-MM-dd
 * <p>
 * 如:
 * 2023-7-8
 * 15
 * 该商品的促销日期为  2023-7-12
 */
public class Test02 {
    public static void main(String[] args) {

        try {
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入商品生产日期:(格式:yyyy-MM-dd)");
            String createDate = scan.nextLine();
            System.out.println("请输入商品保质期:");
            String strDay = scan.nextLine();
            //将保质期strDay转换int类型
            int days = Integer.parseInt(strDay); //保质期

            //将生产日期(String)转换成Date类型
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(createDate); //生产日期
            //把生产日期date转换成Calendar
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);

            //计算过期日
            calendar.add(Calendar.DAY_OF_YEAR, days);
            //计算过期日的前一周
            calendar.add(Calendar.DAY_OF_YEAR, -7);
            //设置为当周的周三
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);

            //将calendar转换成Date,
            Date time = calendar.getTime();
            //将time转换成字符串
            String dateStr = sdf.format(time);
            System.out.println("该商品的打折日是:" + dateStr);


        } catch (ParseException e) {
            e.printStackTrace();
        }


    }
}

/**
 * 秒杀活动
 * 开始时间 2023-11-11 00:00:00
 * 结束时间 2023-11-11 00:15:00
 * 小r秒杀时间 00:12:13
 * 小k秒杀时间 00:15:12
 */
public class Test04 {
    public static void main(String[] args) {
        try {
            String s1 = "2023-11-11 00:00:00";
            String s2 = "2023-11-11 00:15:00";
            String r = "2023-11-11 00:12:13";
            String k = "2023-11-11 00:15:12";
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date1 = simpleDateFormat.parse(s1);
            Date date2 = simpleDateFormat.parse(s2);
            Date dater = simpleDateFormat.parse(r);
            Date datek = simpleDateFormat.parse(k);

            if (dater.before(date2) && dater.after(date1) ){
                System.out.println("成功");
            }else {
                System.out.println("shibai");
            }

            if (datek.before(date2) && datek.after(date1)){ System.out.println("成功");
            }else {
                System.out.println("shibai");
            }


        } catch (ParseException e) {
            e.printStackTrace();
        }

    }
}

三:SimpleDatetime

         创建SimpleDatetime对象  格式任意设置

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");格式

  • yyyy:年

  • MM:月

  • dd: 日

  • HH:24小时的时间

  • hh:12小时的时间

  • mm:分钟

  • ss:秒

           实现String类和Date类相互转换   需要try{}crach(){}抛出格式不匹配异常       

  • parse() 将字符串转换成Date类型
String date = "2008-08-08 20-08-08";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date d = simpleDateFormat.parse(date);
  • format() 将Date类型转换成String类型
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
String dateStr = simpleDateFormat.format(date);
抛出格式不匹配异常
try {
    String s1 = "2001-02-18";
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date date1 = simpleDateFormat.parse(s1);
    Date date2 = new Date();
    System.out.println(date1.before(date2));
    System.out.println(date1.after(date2));
} catch (ParseException e) {
    e.printStackTrace();
}

四:Math  静态方法

double e = Math.E;
double pi = Math.PI;
Math.abs(323); //绝对值
Math.cbrt(2);  //立方根
Math.floor(2.55);//向上取整
Math.ceil(3.66);//向下取整
Math.round(2.3);
Math.round(1.88);//四舍五入
Math.sqrt(3);//平方根
Math.pow(3,2);//几的几次方
Math.random();//生成0-1随机数   包含0不包含1
double v = Math.random() * 10 + 1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值