gpt4 book ai didi

java - Linux时间转换失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:34 24 4
gpt4 key购买 nike

我的程序将采用 HH:MM:SS 格式的当前系统时间并将其转换为秒。我将它转换为秒的原因是因为我想找出 90 秒前的时间。

例如:
当前时间:12:30:30
90秒前时间:12:29:00

但我不能使其成为正确的时间戳。以下是我的程序的输出:

This is the hour in sec :28800
This is the minute in sec : 1500
This is the second :0
This is the total second after minus 90 sec :30210
The converted time after minus 90 sec :00:01:210

当我在我的 linux 终端中发出 date +%T 命令时,它显示了 08:26:09 。我程序中显示的时间甚至不接近我的时间当前系统时间。我已经将时区设置为 PDT 但也无法解决问题。我的 linux 机器使用的是 PDT 时区,我不确定是不是因为时区问题。供您引用,请引用我下面的代码

import java.time.LocalDateTime;
import java.text.SimpleDateFormat;
import java.util.*;

class IP
{
public static void main(String [] args)
{
int hour1 = (LocalDateTime.now().getHour())*3600;
int min1 = LocalDateTime.now().getMinute()*60;
int sec1 = LocalDateTime.now().getSecond();
System.out.println("This is the hour in sec :" +hour1);
System.out.println("This is the minute in sec : "+min1);
System.out.println("This is the second :"+sec1);
long Tsec1 = (hour1 + min1 + sec1)-90;
System.out.println("This is the total second after minus 90 sec :"+Tsec1);
TimeZone tz1 = TimeZone.getTimeZone("PDT");
SimpleDateFormat for1 = new SimpleDateFormat("HH:MM:SS");
for1.setTimeZone(tz1);
System.out.println("The converted time after minus 90 sec :" +for1.format(new Date(Tsec1)));

}

}

最佳答案

如果您使用的是 Java 8,只需使用 minusSeconds LocalDateTime

中的方法

如果您使用的是较低版本,请使用 Calendar

Calendar calendar = Calendar.getInstance(); // gets a calendar using the default time zone and locale.
calendar.add(Calendar.SECOND, -5);
System.out.println(calendar.getTime());

不要像这样手动操作时间,它最终会在一些你没有想到的极端情况下失败。

编辑:您可以像 Dawood 指出的那样在 Java 8 中使用 DateTimeFormatter。或者您可以在 Java 7 中使用 SimpleDateFormat

要记住的是,SimpleDateFormat 不是线程安全的,而较新的 DateTimeFormatter 是线程安全的。

关于java - Linux时间转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44297230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com