java--时间类实例2--毫秒/秒运算(instant、ZoneDateTime)

news2025/1/25 9:04:41

有些时候给出毫秒值来让我们计算时间该怎么办。

文章目录

  • 介绍
  • [蓝桥杯 2021 省 B] 时间显示
    • 题目描述
    • 代码
  • 蓝桥杯–航班时间

介绍

将毫秒值直接转成日期的有

  • new Date(毫秒)
  • Instant.ofEpochMilli(毫秒)
  • Instant.ofEpochSecond(秒)
  • Instant.ofEpochSecond(秒,纳秒)
建议用instant
instant可以转换为ZonedDateTime而ZonedDateTime的功能是非常强大的。

date虽然也可以转换为instant但是底层调用的是ofEpochSecond的方法所以就没有必要用date了

[蓝桥杯 2021 省 B] 时间显示

题目描述

小蓝要和朋友合作开发一个时间显示的网站。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00:00:00 到当前时刻经过的毫秒数。

现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要 显示出时分秒即可,毫秒也不用显示,直接舍去即可。

给定一个用整数表示的时间,请将这个时间对应的时分秒输出。

输入格式

输入一行包含一个整数,表示时间。

输出格式

输出时分秒表示的当前时间, 格式形如 H H : M M : S S \mathrm{HH}: \mathrm{MM}: \mathrm{SS} HH:MM:SS, 其中 H H \mathrm{HH} HH 表示时, 值 为 0 0 0 23 , M M 23, \mathrm{MM} 23,MM 表示分。值为 0 0 0 59 59 59 S S \mathrm{SS} SS 表示秒, 值为 0 0 0 59 59 59。时、分、秒不足两位时补前导 0

样例 #1

样例输入 #1

46800999

样例输出 #1

13:00:00

样例 #2

样例输入 #2

1618708103123

样例输出 #2

01:08:23

提示

对于所有评测用例, 给定的时间为不超过 1 0 18 10^{18} 1018 的正整数。

蓝桥杯 2021 第一轮省赛 B 组 F 题。

代码

import java.io.*;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class Main {

    static final PrintWriter print = new PrintWriter(System.out);
    // 更快的输入输出
    static final StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

    public static long nextLong() throws IOException {
        st.nextToken();
        return (long) st.nval;
    }

    public static void main(String[] args) throws IOException {
        long time = nextLong();
        System.out.println(Instant.ofEpochMilli(time).atZone(ZoneId.of("GMT")).format(DateTimeFormatter.ofPattern("HH:mm:ss")));
        print.flush();
    }
}

蓝桥杯–航班时间

这个题目在实例1介绍过了
在洛谷刷的时候只能jdk8.然后发现编译失败了。原来蓝桥杯平台还高些。这些平台怎么还在jdk8啊。
下面是代码,具体逻辑没有改变,只改变了使用秒转换为时间的过程。下面有更加深入的了解

import java.io.*;
import java.time.*;
import java.time.format.DateTimeFormatter;

public class Main {
    static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {
        //在此输入您的代码...
        int n = Integer.parseInt(br.readLine());
        for (int i = 0; i < n; i++) {
            String[] s = br.readLine().split(" ");
            String[] s2 = br.readLine().split(" ");
            long t = (getTime(s).getSeconds() + getTime(s2).getSeconds())/2;
            ZonedDateTime time = Instant.ofEpochSecond(t).atZone(ZoneId.of("GMT"));
            System.out.printf("%02d:%02d:%02d\n",time.getHour(),time.getMinute(),time.getSecond());
        }
    }

    public static Duration getTime(String[] s){
        String d = "2019-01-01 ";
        LocalDateTime time1 = LocalDateTime.parse(d+s[0], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        LocalDateTime time2 = LocalDateTime.parse(d+s[1], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        if (s.length > 2){
            time2 = time2.plusDays((int) s[2].charAt(2));
        }
        return Duration.between(time1, time2);
    }
}


我就在想能不能直接用instant做了。
首先就是如果pase字符串。
看见instant有pase的方法。在这里插入图片描述
这样速度快了一丢丢,也减少了点类的使用。

    public static long getTime(String[] s) {
        String d = "2019-01-01T%s.00Z";
        Instant t1 = Instant.parse(String.format(d, s[0]));
        Instant t2 = Instant.parse(String.format(d, s[1]));
        if (s.length > 2) {
            t2 = t2.plus((int) s[2].charAt(2), ChronoUnit.DAYS);
        }
        return t2.getEpochSecond() - t1.getEpochSecond();
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s知识整理(继续整理中)

文章目录 k8s组件master节点kube-apiserverkube-schedulerkube-controller-manageretcd work节点kube-proxykubeletcontainer runtime add onsCoreDNSingress controller Pod常用控制器k8s pod创建调度过程k8s pod删除过程k8s 灰度发布&#xff08;金丝雀部署&#xff09;k8s 蓝…

日撸 Java 三百行day37

文章目录 说明day37 十字链表1.思路整理1.1十字链表的数据结构&#xff1a;1.2 手动模拟十字链表 2.代码分析2.1 十字链表的构造2.2 单元测试 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放…

ambari的kafka服务开启sasl

添加 sasl 配置⽂件 集群部署 Kafka2.2下载地址 http://archive.apache.org/dist/kafka/2.2.1/kafka_2.11-2.2.1.tgz 解压安装包 tar -zxvf kafka_2.11-2.2.1.tgz 部署略 ambari 数据kafka服务 在kafka的conf目录下创建sasl_conf目录,将kafka_client_jaas.conf/kafka_se…

深入浅出MySQL——CRUD

文章目录 表的增删改查Create单行数据全列插入多行数据指定列插入插入否则更新替换——REPLACE RetrieveSELECT 列WHERE 条件结果排序筛选分页结果 UpdateDelete删除数据截断表 插入查询结果聚合函数group bywhere和having SQL查询中各个关键字的执行先后顺序函数日期函数字符串…

SQL优化(3):order by优化

MySQL的排序&#xff0c;有两种方式&#xff1a; Using filesort : 通过表的索引或全表扫描&#xff0c;读取满足条件的数据行&#xff0c;然后在排序缓冲区sort buffer中完成排序操作&#xff0c;所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序。 Using index :…

IDEA 使用系列之 Alibaba Cloud Toolkit 一件部署

一、前文 做开发&#xff0c;免不了要往服务器部署前端后端&#xff0c;首先要用xftp把前后端所在文件夹打开&#xff0c;把jar、dist备份再上传&#xff0c;然后再打开xshell把前后端kill掉&#xff0c;然后再敲命令重新启动前后端&#xff0c;少则2、3分钟&#xff0c;多则10…

创新案例|探索 Snyk 的 PLG 团队1.6倍年度 ARR 增长背后的策略

组织架构不匹配、权责分配不清晰以及团队协作无机制是推进PLG业务面临的三大核心挑战&#xff0c;而安全软件公司Snyk以其指数级营收和估值增长的成功实践证明&#xff0c;构建合适且高效团队是助力PLG创新实现高速增长的关键&#xff0c;其经验值得借鉴。本文将通过分析Synk如…

Java+GeoTools实现WKT数据根据EPSG编码进行坐标系转换

场景 JavaGeoTools(开源的Java GIS工具包)快速入门-实现读取shp文件并显示&#xff1a; JavaGeoTools(开源的Java GIS工具包)快速入门-实现读取shp文件并显示_霸道流氓气质的博客-CSDN博客 在上面实现Java中集成Geotools之后&#xff0c;需求是将WKT数据转换成其他坐标系的W…

计算机网络-如何寻找目标主机

视频参考链接&#xff1a;计算机网络-如何寻找目标计算机&#xff1f;_哔哩哔哩_bilibili 在互联网中如果使计算机A与计算机B如何进行通信&#xff0c;又是如何找到目标的计算机主机呢&#xff1f; 首先最简单的通信就是两台计算机中间加一根网线&#xff0c;那么这两台计算机…

算法基础—哈希表散列表的构建和处理冲突

1 哈希表的构建 1. 直接寻址法 取关键字或者关键字的某个线性函数值作为哈希地址,即H(Key)Key或者H(Key)a*Keyb(a,b为整数),这种散列函数也叫做自身函数.如果H(Key)的哈希地址上已经有值了,那么就往下一个位置找,知道找到H(Key)的位置没有值了就把元素放进去. 2. 数字分析法…

idea中导入spring源码;在spring源码中添加注释

标题&#xff1a;idea中导入spring源码;在spring源码中添加注释 我是跟着他操作的&#xff0c;下文是一些补充说明&#xff1a; 这个也可以借鉴 gradle下载链接【使用网盘下载】,不过有的没有&#xff0c; gradel下载链接&#xff1a;这个比较全 1.Spring源码编译环境 spr…

股票期货模拟交易有用吗?股票期货模拟交易心得

股票期货市场为了满足新用户的需求&#xff0c;有专门的股票期货模拟交易平台&#xff0c;大家可以在这个平台上进行股票期货的模拟交易&#xff0c;这样可以通过不断总结&#xff0c;丰富我们的知识。下面整理的股票期货模拟交易实验心得&#xff0c;从股票期货模拟交易与实盘…

远程 PC 访问软件

什么是远程电脑 远程电脑是物理上无法访问的计算机。不同分支机构中的漫游用户和员工的设备将是组织中 IT 管理员的远程计算机。 什么是远程 PC 访问 远程 PC 访问是一种控制物理无法触及的设备的功能。计算机、笔记本电脑、端点&#xff01;它们始终分散在全球各地的 IT 环…

【应用部署】Java项目从开发到部署生产完整流程

文章目录 背景一、开发环境二、项目搭建2.1 Maven创建项目2.1.1 创建maven项目2.1.2 引入依赖2.1.3 maven常用命令 三、SpringBoot基础配置四、项目打包4.1 打包jar4.2 打包war4.2.1 修改项目打包为war包4.2.2 排除内嵌的tomcat&#xff0c;引入外部tomcat4.2.3 添加servlet-ap…

数据库基础篇 《10.创建和管理表DDL》

目录 1. 基础知识 1.1 一条数据存储的过程 1.2 标识符命名规则 ​1.3 MySQL中的数据类型 ​ 2. 创建和管理数据库 2.1 创建数据库 2.2 使用数据库 2.3 修改数据库 2.4 删除数据库 3. 创建表 3.1 创建方式1 3.2 创建方式2 ​3.3 查看数据表结构 4. 修改表 4.1…

2023华为软件精英挑战赛,探寻软件人才与科技创新的最优解

作者 | 曾响铃 文 | 响铃说 今天&#xff0c;软件行业正呈现出江河入海一般的大汇流趋势。 一方面是技术的汇流&#xff0c;诸如人工智能等前沿技术与软件行业的深度融合&#xff0c;正全面颠覆软件产品的开发模式和服务逻辑。 另一方面则是行业的汇流&#xff0c;数字化浪…

PyEcharts数据可视化(1)——配置项

PyEcharts 学习连接 一、查看pyecharts版本 import pyecharts print(pyecharts.__version__)输出&#xff1a;1.9.0 二、绘制第一个图表 from pyecharts.charts import Bar bar Bar() # 创建柱形图对象 bar.add_xaxis(["衬衫","羊毛衫","雪纺衫…

创建路由React router(使用react-router dom V6版本)

React路由 隔了很长一段时间&#xff0c;重新捡起来React学习。 发现React的路由从原来的 Switch改成了Routes。nice&#xff0c;nice&#xff0c;nice&#xff01;&#xff01;&#xff01;&#xff01; 刚开始接触确实还是有一点生疏的。之前的关于【传参】【js跳转】【跳转模…

管理后台项目-06-用户管理角色管理模块

目录 1-路由信息搭建和api文件信息创建 2-用户管理模块 2.1-列表数据获取以及动态渲染 2.2-添加 | 修改 用户 2.3-删除-批量删除用户 2.4-分配角色 3-角色管理 3.1-修改角色 3.2-分配权限 1-路由信息搭建和api文件信息创建 我们先进行路由菜单的配置&#xff0c;在系统…

【测试开发】测试人的养成记,在这测试内卷乱世中突破测试开发...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 这几年&#xff0…