JavaSE——常用API进阶二(4/8)-秒杀案例(需求与分析、代码与运行结果)、Calendar(Calendar日历类的常见方法、用法示例)

简介: JavaSE——常用API进阶二(4/8)-秒杀案例(需求与分析、代码与运行结果)、Calendar(Calendar日历类的常见方法、用法示例)

秒杀案例

学习了前面的Date类和SimpleDateFormat类,现在我们就用它们做一个小案例。

需求与分析

需求

  • 小贾下单并付款的时间为:2023年11月11日 0:01:18
  • 小皮下单并付款的时间为:2023年11月11日 0:10:51
  • 秒杀开始时间:2023年11月11日 0:0:0
  • 秒杀结束时间:2023年11月11日 0:10:0
  • 请用代码说明这两位同学有没有参加上秒杀活动?

第一步我们要先把秒杀开始时间、结束时间、小贾下单时间和小皮下单时间都以字符串的格式存储到程序中



要判断两位同学是否成功参与了秒杀活动,就要比较时间值,而只有毫秒值是最好比较的,所以接下来我们的目标就是将字符串一步一步转换成毫秒值。

第二步,先把字符串解析成日期对象。



第三步,把日期对象转换成时间毫秒值来进行比较,判断是否成功参与到了秒杀活动


代码与运行结果

public class Test {
    public static void main(String[] args) throws ParseException {
        //1.把开始时间、结束时间、小贾下单时间、小皮下单时间拿到程序中来。
        String start = "2023年11月11日 0:0:0";
        String end = "2023年11月11日 0:10:0";
        String xj ="2023年11月11日 0:01:18";
        String xp = "2023年11月11日 0:10:57";
 
        //2、把字符串的时间解析成日期对象。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date startDt = sdf.parse(start);
        Date endDt = sdf.parse(end);
        Date xjDt = sdf.parse(xj);
        Date xpDt = sdf.parse(xp);
 
        //3、把日期对象转换成时间毫秒值来判断,开始判断小皮和小贾是否秒杀成功。
        long startTime = startDt.getTime();
        long endTime = endDt.getTime();
        long xjTime = xjDt.getTime();
        long xpTime = xpDt.getTime();
 
        if(xjTime >= startTime && xjTime <= endTime){
            System.out.println("小贾您秒杀成功了!");
        }else{
            System.out.println("小贾您秒杀失败了~");
        }
 
        if(xpTime >= startTime && xpTime <= endTime){
            System.out.println("小皮您秒杀成功了!");
        }else{
            System.out.println("小皮您秒杀失败了~");
        }
    }
}

运行结果:



完成了这个小案例之后,我们来学习Calendar。

对于某些需求,例如将2024年08月10日增加一个月,我们用上面的思路来解决,需要以下步骤:

  1. 定义字符串记住:2024年08月10日
  2. 把字符串时间解析成Date日期对象
  3. 通过Date日期对象获取2024年8月10日的毫秒值
  4. 增加一个月的毫秒值:1000*60*60*24*30
  5. 再格式化时间毫秒值得到结果:2024年9月10日

而Calendar类就可以把这个问题简单化,直接单独获取、修改时间中的年、月、日、时、分、秒等。

Calendar

  • 代表的是系统此刻时间对应的日历。
  • 通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。

Calendar日历类的常见方法 图片.png

用法示例

public class Test {
    public static void main(String[] args) throws ParseException {
        System.out.println("1.得到系统刺客时间对应的日历对象");
        Calendar now = Calendar.getInstance();
        System.out.println(now);
 
        System.out.println();
 
        System.out.println("2.获取日历中的某个信息");
        int year = now.get(Calendar.YEAR);
        System.out.println(year);
 
        int days = now.get(Calendar.DAY_OF_YEAR);
        System.out.println(days);
 
        System.out.println();
 
        System.out.println("3.拿到日历中记录的日期对象");
        Date d = now.getTime();
        System.out.println(d);
 
        System.out.println();
 
        System.out.println("4.拿到时间毫秒值");
        long time = now.getTimeInMillis();
        System.out.println(time);
 
        System.out.println();
 
        System.out.println("5.修改日历中的某个信息");
        now.set(Calendar.MONTH,9);
        now.set(Calendar.DAY_OF_YEAR,125);
        System.out.println(now);
 
        System.out.println();
 
        System.out.println("6.为某个信息增加或者减少多少");
        now.add(Calendar.DAY_OF_YEAR,100);      //增加100天
        now.add(Calendar.DAY_OF_YEAR,-10);      //减少10天
        now.add(Calendar.DAY_OF_MONTH,-10);
        now.add(Calendar.HOUR,12);
        System.out.println(now);
    }
}

运行结果:



注意:Calendar是可变对象,一旦修改后其对象本身表示的时间将产生变化。


END



目录
相关文章
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
604 102
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
10月前
|
人工智能 API 开发者
图文教程:阿里云百炼API-KEY获取方法,亲测全流程
本文详细介绍了如何获取阿里云百炼API-KEY,包含完整流程与截图指引。需先开通百炼平台及大模型服务,再通过控制台创建并复制API-KEY。目前平台提供千万tokens免费额度,适合开发者快速上手使用。
6850 5
|
安全 程序员 API
API对于程序员的多元用法:从基础到实战
API(应用程序编程接口)是现代软件开发中不可或缺的工具,充当不同系统间沟通的桥梁。通过API,程序员可以轻松获取外部数据、扩展应用功能、实现微服务间的通信等,极大提升开发效率和应用功能性。常见的API类型包括Web API、本地API和第三方API。使用API,开发者能快速集成复杂功能(如支付、物流跟踪),并确保数据安全与管理。掌握API的开发、维护及安全管理技巧,对构建高效、稳定的应用至关重要。随着数字化进程加速,API的重要性将不断提升。
550 1
|
人工智能 数据可视化 API
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
本文介绍了使用HarmonyOS的Calendar Kit开发日程管理应用的过程。通过API 13版本,不仅实现了创建、查询、更新和删除日程等基础功能,还深入探索了权限请求、日历配置、事件添加及查询筛选等功能。实战项目中,开发了一个智能日程管理工具,具备可视化管理、模糊查询和智能提醒等特性。最终,作者总结了模块化开发的优势,并展望了未来加入语音助手和AI推荐功能的计划。
1304 1
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
2319 5
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
927 5
|
9月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
10月前
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。
|
9月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南