时间类型中的转换知识

举报
多米诺的古牌 发表于 2022/10/29 14:18:23 2022/10/29
【摘要】 时间类型的参数处理中我们可能会遇到字符串类型的时间参数,可能会遇到Date类型的时间参数,可能会遇到DateTime类型的时间参数,可能会到时间戳类型的时间参数,那么他们之间是如果转换的呢?要怎么样才能获得我们需要的时间类型呢?本文中将进行简单转换介绍。

1.时间类型的处理中遇到的问题

时间类型的参数处理中我们可能会遇到字符串类型的时间参数,可能会遇到Date类型的时间参数,可能会遇到DateTime类型的时间参数,可能会到时间戳类型的时间参数,那么他们之间是如果转换的呢?要怎么样才能获得我们需要的时间类型呢?本文中将进行简单转换介绍。

2.转换介绍

2.1 字符串类型和DateTime类型的相互转换

2.1.1 字符类型转成DateTime类型

string startTime="2022-10-29 13:34:35"; 
DateTime parseTime = DateTime.Parse(startTime); 
2.1.2 DateTime类型转成String类型
DateTime date = new DateTime(); 
string format = "YYYY-MM-dd-HH-mm-ss"; 
string formatStr = date.ToString(format); 
2.2 时间戳转换为Date

2.2.1 获取当前时间的时间戳

在获得当前的时间戳的时候,一般是会获取到毫秒级别的,但是我们一般使用只需要到秒就可以了,所以可以除以1000来获取精确到秒的时间戳。此时我们获取的时间戳是long类型数据,我们使用时常常会进行转换,比如转换成字符串类型的时间戳:

String timestamp = String.valueOf(new Date().getTime() / 1000); 
将字符串类型的时间戳转换成Integer类型的时间戳:
int integer = Integer.valueOf(timestamp);
2.2.2 将精确到秒的时间戳转换成Date

如果想获取到秒的时间戳需要乘以1000在进行new Date的转换,如果不乘转换出来有可能会造成前面年份变成1970年这种的情况。

long longTimeStamp = new Long(new Long(timeStamp) * 1000); 
Date date = new Date(longTimeStamp); 
2.2.3 将Date类型转换为格式化好的字符串类型
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
String dareString = simpleDateFormat.format(date); 

2.3 LocalDateTime和Date直接的转换

因为我们知道Date和SimpleDateFormat类都是线程不安全的,而现在高并发的处理越来越广泛,因此我们开始越来越多的使用LocalDateTime和DateTimeFormatter因为他们都是线程安全的,那么在使用LocalDateTime的时候就会涉及到转换的问题,常遇到的就是LocalDateTime和Date直接的转换,下面我们进行简单的介绍:

2.3.1 Date类型和LocalDate之间的转换

Date date = new Date(); 
Instant instant = date.toInstant(); 
ZoneId zoneId = ZoneId.systemDefault(); 
LocalDate localDate = instant.atZone(zoneId).toLocalDate(); 
ZoneId zoneId = ZoneId.systemDefault(); 
ZonedDateTime zdt = localDate.atStartOfDay().atZone(zoneId); 
Date date = Date.from(zdt.toInstant());
2.3.2 Date类型和LocalDateTime之间的转换
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
Date date = Date.from(zdt.toInstant());
2.3.3 LocalDateTime转字符串
LocalDateTime dt = LocalDateTime.now(); 
String formatTime = dt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
以上就是时间类型转换中所遇到的各种转换问题的简单整理。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。