我的程序将在HH:MM:SS中占用当前系统时间并将其转换为秒。我把它转换成秒的原因是因为我想找出90秒前的时间。
例如:
当前时间:12:30:30
时间90秒前:12:29:00
但我可以&#39 ; t使它到正确的时间戳。以下是我的程序的输出:
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)));
}
}
答案 0 :(得分:1)
如果您使用的是Java 8,请使用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());
不要像这样手动操纵时间,它最终会在你没想过的某个角落里失败。
编辑:
您可以使用Java 8中的DateTimeFormatter
,就像Dawood指出的那样。
或者您可以在Java 7中使用SimpleDateFormat
。
要记住的是SimpleDateFormat不是线程安全的,而较新的DateTimeFormatter是。
答案 1 :(得分:0)
由于您只需要时间,因此可以使用LocalTime
java.time
。示例如下:
LocalTime now = LocalTime.now(ZoneId.systemDefault());
System.out.printf("Current Time: %s\n", now); // Current Time: 10:20:55.894
LocalTime ninetySecBefore = now.minusSeconds(90);
System.out.printf("Ninety Seconds earlier : %s\n", ninetySecBefore); // Ninety Seconds earlier : 10:19:25.894
System.out.println(ninetySecBefore.format(DateTimeFormatter.ofPattern("hh:mm:ss"))); //10:19:25