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



目录
相关文章
|
4天前
|
JSON API 网络架构
gRPC 与 REST 的比较分析:哪种 API 适合您的开发需求?
gRPC, 由 Google 推出的开源远程过程调用(RPC)框架, 使两个应用程序间的方法调用变得简单,支持结构化数据的交换。通过采用 Protocol Buffers (Protobuf) ——一种与语言无关的接口定义语言,gRPC 体现了许多现代网络通信技术的优势
gRPC 与 REST 的比较分析:哪种 API 适合您的开发需求?
|
10天前
|
分布式计算 API 对象存储
Ray是一个开源的分布式计算框架,用于构建和扩展分布式应用。它提供了简单的API,使得开发者可以轻松地编写并行和分布式代码,而无需担心底层的复杂性。
Ray是一个开源的分布式计算框架,用于构建和扩展分布式应用。它提供了简单的API,使得开发者可以轻松地编写并行和分布式代码,而无需担心底层的复杂性。
|
6天前
|
JSON API 数据格式
App Inventor 2 天气预报App开发 - 第三方API接入的通用方法
通过调用第三方天气api,填入必要的参数,通过Web客户端请求url。返回json格式的数据结果,使用AppInventor2解析json结果,显示到App上即可。
45 5
|
6天前
|
监控 API 网络安全
​邮件通知提醒邮箱警告设置教程及API代码示例
**摘要:** 在系统管理中,邮件通知提醒用于及时报告异常和重要事件。本文提供AOKSend的设置教程和API代码示例,教你如何配置邮件警告。通过自动化邮件通知,可以提升响应速度,确保系统稳定性。步骤包括注册AOKSend账户、获取API密钥、设置SMTP配置、创建触发条件及编写Python API代码示例。利用AOKSend API发送警告邮件,如CPU使用率过高通知,可有效监控和测试,确保系统异常时能快速响应。
|
8天前
|
消息中间件 API 数据库
在微服务架构中,每个服务通常都是一个独立运行、独立部署、独立扩展的组件,它们之间通过轻量级的通信机制(如HTTP/RESTful API、gRPC等)进行通信。
在微服务架构中,每个服务通常都是一个独立运行、独立部署、独立扩展的组件,它们之间通过轻量级的通信机制(如HTTP/RESTful API、gRPC等)进行通信。
|
4天前
|
人工智能 API
Agent如何掌握API的用法
Agent如何掌握API的用法
|
5天前
|
运维 Devops API
阿里云云效操作报错合集之直接用API调用可以使用,但是本地用Go代码调用失败,是什么导致的?
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
8天前
|
JSON 人工智能 API
App Inventor 2 人脸识别App开发 - 第三方API接入的通用方法
**App 效果图**:展示人脸识别功能,可识别性别和年龄。 **工作原理**:调用第三方人脸识别API,上传图片并接收返回的JSON数据,AppInventor2解析结果显示。
23 0
|
10天前
|
机器学习/深度学习 TensorFlow API
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
|
15天前
|
存储 监控 API
解锁京东 APP 商品详情的 API 接口获取方法
在数字化商业环境中,获取京东APP商品详情的API接口至关重要。这有助于电商数据分析、价格监控、商品推荐等。API接口提供高效、稳定且合规的数据源,允许快速获取大量商品信息。要使用接口,需注册开发者账号、了解接口文档并进行开发调试。示例代码展示了Python如何调用接口。同时,注意遵守规则、处理数据安全及接口更新。利用API能提升业务效率,但需在合法合规下进行。

热门文章

最新文章