Java 与 Go:时间函数

在软件开发中,时间和日期函数是必不可少的组成部分,而 Java 和 Go 是两种备受欢迎的编程语言,它们在时间和日期函数方面有着各自独特的特性。本文将对比 Java 和 Go 在时间和日期函数上的优劣,并探讨它们的用法和适用场景。

Java的时间和日期函数

Java 提供了丰富的时间和日期函数,主要集中在 java.time 包中。这个包引入了全新的日期和时间 API,提供了多种类和函数,以满足各种时间和日期处理需求并且替代过时的 java.util.Date 和 java.util.Calendar。而且这里我们不涉及java.sql包下的日期时间类。

创建日期和时间对象

  • LocalDate:表示日期,使用 LocalDate.of(year, month, dayOfMonth) 创建日期对象。
  • LocalTime:表示时间,使用 LocalTime.of(hour, minute, second) 创建时间对象。
  • LocalDateTime:表示日期和时间,使用 LocalDateTime.of(year, month, dayOfMonth, hour, minute, second) 创建日期时间对象。
  • ZonedDateTime:表示带时区的日期和时间,使用 ZonedDateTime.of(LocalDateTime, ZoneId) 创建。
LocalDate date = LocalDate.of(2022, 3, 14);
LocalTime time = LocalTime.of(10, 30, 0);
LocalDateTime dateTime = LocalDateTime.of(2022, 3, 14, 10, 30, 0);
ZonedDateTime zonedDateTime = ZonedDateTime.of(dateTime, ZoneId.of("Asia/Shanghai"));

格式化和解析日期时间字符串

  • DateTimeFormatter:用于格式化和解析日期时间字符串。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
LocalDateTime parsedDateTime = LocalDateTime.parse("2022-03-14 10:30:00", formatter);

时间操作和计算

  • Duration:表示时间间隔,用于计算两个时间点之间的差异。
  • Period:表示日期间隔,用于计算两个日期之间的差异。
LocalDateTime start = LocalDateTime.of(2022, 3, 14, 10, 0);
LocalDateTime end = LocalDateTime.of(2022, 3, 14, 12, 30);

Duration duration = Duration.between(start, end);
long hours = duration.toHours(); // 2

LocalDate date1 = LocalDate.of(2022, 3, 14);
LocalDate date2 = LocalDate.of(2022, 3, 18);

Period period = Period.between(date1, date2);
int days = period.getDays(); // 4

时间调整和计算

  • plus 和 minus 方法:用于增加或减少时间间隔。
  • with 方法:用于设置时间字段的值。
LocalDateTime newDateTime = dateTime.plusHours(1).minusMinutes(15);
LocalDate newDate = date.withYear(2023).withMonth(6).withDayOfMonth(21);

小结

LocalDate 类提供了丰富的方法来操作和处理日期,包括创建、获取日期的各个部分、获取星期几、判断日期先后顺序、调整日期、格式化日期、解析日期字符串等。使用这些方法,可以方便地处理和操作日期对象。

Go

Go 语言中的时间和日期处理主要依赖于标准库中的 time 包。该包提供了丰富的功能来处理时间和日期,包括创建时间对象、格式化时间、解析时间字符串、计算时间差异等。以下是 time 包中常用的函数和用法:

创建时间对象

  • time.Now():获取当前时间。
  • time.Date(year, month, day, hour, minute, second, nanosecond, location):根据指定的年、月、日、时、分、秒、纳秒和时区创建时间对象。
currentTime := time.Now() // 获取当前时间
customTime := time.Date(2022, time.March, 14, 10, 30, 0, 0, time.UTC) // 创建自定义时间对象

格式化时间

  • time.Format(layout string):将时间对象格式化为指定布局的字符串。
formattedTime := currentTime.Format("2006-01-02 15:04:05") // 格式化时间为 "年-月-日 时:分:秒"

解析时间字符串

  • time.Parse(layout string, value string):根据指定布局解析时间字符串。
parsedTime, _ := time.Parse("2006-01-02 15:04:05", "2022-03-14 10:30:00") // 解析时间字符串为时间对象

时间操作和计算

  • time.Add(duration Duration):增加时间间隔。
  • time.Sub(t Time) Duration:计算两个时间对象之间的时间差。
newTime := currentTime.Add(time.Hour * 2) // 增加两个小时
duration := currentTime.Sub(parsedTime) // 计算时间差

时区处理

Go 的时间包含时区信息,因此可以轻松地处理不同时区的时间。

loc, _ := time.LoadLocation("America/New_York") // 加载纽约时区
timeInNY := currentTime.In(loc) // 获取纽约时区的时间

获取时间的各个部分

  • Time.Year():获取年份。
  • Time.Month():获取月份。
  • Time.Day():获取日期。
  • Time.Hour():获取小时。
  • Time.Minute():获取分钟。
  • Time.Second():获取秒数。
year := currentTime.Year()
month := currentTime.Month()
day := currentTime.Day()
hour := currentTime.Hour()
minute := currentTime.Minute()
second := currentTime.Second()

获取星期几

Go 中获取星期几比较简单,使用 Time.Weekday() 方法即可。

weekday := currentTime.Weekday() // 获取星期几

小结

Go 语言的时间和日期处理功能丰富而简洁,通过 time 包提供的函数和方法,可以轻松地处理时间对象的创建、格式化、解析、计算以及时区处理等需求。这使得 Go 在处理时间和日期相关的任务时变得更加方便和高效。

总结

Java 和 Go 在时间和日期函数方面有各自的优劣和适用场景。选择使用哪种语言取决于项目需求、团队经验和性能考量。在实际开发中,可以根据具体情况灵活选择 Java 或 Go,以满足项目的时间和日期处理需求。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024品牌私域运营:「去中心化」正在成为企业决胜关键

越来越多的品牌选择以DTC模式与消费者互动和销售。通过与消费者建立紧密联系,不仅可提供更具成本效益的规模扩张方式,还能控制品牌体验、获取宝贵的第一方数据并提升盈利能力。许多企业采取的DTC私域策略以交易为中心的方法往往导致了成本上升和运营复杂…

网络编程(1)写一个简单的UDP网络通信程序【回显服务器】,并且实现一个简单的翻译功能

使用 JAVA 自带的api 目录 一、回显服务器 UdpEchoServer 服务器代码 客户端代码 二、翻译功能 UdpDictServer 在UdpDictServer里重写process方法 一、回显服务器 UdpEchoServer /*** 回显服务器* 写一个简单的UDP的客户端/服务器 通信的程序* 这个程序没有啥业务逻辑&am…

RGB与gray图互转

参考博客 https://www.cnblogs.com/alex-bn-lee/p/15140708.html 显示图片 import cv2 from PIL import Imageimg cv2.imread("./mingyu.png") img cv2.cvtColor(img, cv2.COLOR_BGR2RGB)display(Image.fromarray(img)) RGB 转gray gray cv2.cvtColor(img, cv2…

【从零开始学习Redis | 第八篇】认识Redis底层数据结构(下)

目录 前言: ZipList: Ziplist的特性: QucikList: QuicList特征: SkipList: 跳表特征: RedisObijct: 小心得: 总结: 前言: 在现代软件开发中,数据…

NGINX 反向代码 CORS

我遇到了一个问题就是 Nginx 是作为反向代理服务器部署的,但因为 Nginx 的配置导致 CORS 问题。 在这个时候我们可以对 Nginx 的配置文件进行修改: 在 location 后添加下面的内容: add_header Access-Control-Allow-Origin *; add_header A…

浏览器https受信任证书生成——openssl颁发受信任证书

站点常常由于没有受信任的第三方CA机构颁发证书,使用https访问时,浏览器常常会弹出不安全的提示,为解决该问题,可以使用openssl颁发个人证书来解决该问题。 1openssl安装及使用方式参考:32.9 x509_OpenSSL 中文手册https://www.openssl.net.cn/docs/230.html2.本文章所有生…

快速匹配和编译NXP官方uboot-imx

目录 概述 1 搭建编译环境 2 下载和编译uboot-imx 2.1 下载软件包 2.2 编译代码 3 总结 概述 本文主要讲述如何快速匹配和编译NXP官方uboot-imx。文中总结了生成u-boot文件的整个流程,笔者通过实操的方法,一步步从编译器下载,编译环境…

使用postman调用Vcenter-Api

一、下载postman Postman API Platform 二、Vcenter-APi-文档 Create Session | CIS | vSphere CIS REST APIs 三、如何调用? 一、获取访问凭证 两种方式进行鉴权,这里讲第一种。 二、使用postman调用Api获取凭证 下面就是vmware-api-session-id …

Linux Php 连接 SAP Hana数据库客户端

下载地址 : SAP Development Tools https://tools.hana.ondemand.com/#hanatools 进入hanaclient-2.19.21-linux-x64 无需编译,运行 ./hdbinst 提示没有权限,执行chmod x * 有个子目录里面的也是没有权限,进入那个子目录 执行chmod …

MySQL WHERE 条件查询

我们通常要求在执行 SELECT 查询时,都要带上查询条件。那这一节,我们就来学习一些简单的 WHERE 条件查询。 我们仍然以技术派文章表 article 为例,比如说我们要查找标题为“聊聊分库分表”的文章,可以这么写: SELECT *…

Nginx(Docker 安装的nginx)配置域名SSL证书

1.首先确保Linux环境上已经安装了docker(可参考VMware使用和Linux安装Docker_wmware直接部署linux和安装docker后-CSDN博客 2.通过docker 安装nginx(可参考Linux 环境安装Nginx—源码和Dokcer-CSDN博客) 3.安装SSL证书 3.1 在宿主机中创建…

DaisyDisk for mac 苹果电脑磁盘清理工具

DaisyDisk for Mac是一款直观易用的磁盘空间分析工具,专为Mac用户设计,旨在帮助他们快速识别和管理磁盘上的文件与文件夹,从而释放存储空间。 软件下载:DaisyDisk for mac 激活版 DaisyDisk采用独特的可视化界面,将磁盘…

R语言使用函数随机抽取并求均值和做T检验,最后输出随机抽取50次均值和pvalue的结果

1.输入数据&#xff1a;“5utr-5d做ABD中有RG4和没有RG4的TE之间的T检验.csv” 2.代码&#xff1a; setwd("E:\\R\\Rscripts\\5UTR_extended_TE") # 载入必要的库 library(tidyverse) library(dplyr) library(openxlsx) # 读取数据 data <- read.csv("5ut…

机器学习笔记(4)—逻辑回归(Logistic Regression)

文章目录 逻辑回归&#xff08;Logistic Regression&#xff09;分类问题假说表示判定边界代价函数简化的成本函数和梯度下降多类别分类&#xff1a;一对多 逻辑回归&#xff08;Logistic Regression&#xff09; 分类问题 分类问题中&#xff0c;我们要预测的变量 y y y是一…

第2章 进程与线程(4)

2.4 死锁 多个进程因竞争资源而造成的一种僵局。若无外力,这些进程都无法推进。 2.4.1 死锁的概念 死锁,饥饿,死循环的对比 死锁产生的原因: (1)系统资源的竞争 (2)进程不合理的推进顺序 (3)信号量使用不恰当也会造成死锁 总结:对不可剥夺的资源的不合理分配导致死锁 死锁产…

吴恩达机器学习笔记 二十九 树的增强 XGBoost 极端梯度提升 什么时候使用决策树 决策树和神经网络的比较

增强树&#xff1a;和随机森林类似&#xff0c;但再抽取时每个样本被抽到的概率不是相同的&#xff0c;而是让算法更容易选到使之前训练的树错误分类的样本。这种方式被称为刻意练习(deliberate practice)&#xff0c;相当于把做的不好的部分再拿出来练习一遍。 XGBoost&#x…

基于nodejs+vue文学创作的社交论坛python-flask-django-php

课题主要采用nodejs技术和MySQL数据库技术以及express框架进行开发。系统主要包括个人中心、用户管理、文章类型管理、文章信息管理、文章举报管理、警告信息管理、系统管理等功能&#xff0c;从而实现智能化的社交论坛管理方式&#xff0c;提高社交论坛管理的效率。 前端技术&…

R折线图(自备)

目录 折线图基础 创建散点和折线图 复杂折现加图例 折线图柱状图 数据处理 进行差异检验 基础绘图折线 基础绘图箱线 进行合并 双轴柱状与折线图 数据 折线图基础 创建散点和折线图 rm(list ls()) opar <-par(no.readonlyTRUE)##自带orange数据集 par(mfrowc…

科技引领趋势:3D元宇宙展厅在各行业中的应用及其未来展望

随着技术的不断进步&#xff0c;3D元宇宙展厅正逐渐成为各行各业展示产品的新选择。相较于传统的线下展厅&#xff0c;3D元宇宙展厅以其独特的优势&#xff0c;为产品展示和品牌推广提供了全新的可能性。 一、虚拟与现实的完美融合 3D元宇宙展厅是指在虚拟世界中构建的三维展览…

小程序接入第三方信息流流程 下载SDK

由第三方信息流提供相应的SDK下载链接以及接入说明和开发文档或其他方式接入&#xff0c;如果第三方能支持小程序SDK&#xff0c;则不需要后面步骤&#xff0c;只需要提供相关开发文档和接入方式接口 接入SDK 后台开发人员接入第三方提供的SDK&#xff0c;并进行相关接口开发…