個々の時間での操作:HH:MM:SS

NewJava:

「20 10 50」のような文字列形式の日付と時間を考えると、私は正常にインターネットを参照することにより、SDFにそれを変換しています。今どのように私はちょうど作成したのと同じ日に動作しますか?

X=3600*HH+60*MM+SS

    public static void main(String[] args) throws ParseException {
        int numberOfTests=3;
        String [] timeStamps=new String[3];
        timeStamps[0]="10 10 10";
        timeStamps[1]="10 10 16";
        timeStamps[2]="10 10 50";

        int [] X=new int[3];
        DateFormat sdf = new SimpleDateFormat("hh mm ss");
        Date t1=sdf.parse(timeStamps[0]);
        Date t2=sdf.parse(timeStamps[1]);
        Date t3=sdf.parse(timeStamps[2]);

        //X=3600*HH+60*MM+SS

これは私が到達しているか遠くにあります。私はこの後、私はそれがすべてのソート持っている私は何をすべきか知っているが、私はここで立ち往生しています。

私が使用してそれを実行しようとしましたsplit最初は、私はこの方法にこだわったので、それは、後に複雑になりました。

azro:

あなただけ適用したい場合はX = 3600*HH + 60*MM + SS、日付を通過する必要があります(どちらかはありませんDateLocalTime)だけを使用String

for (int i = 0; i < timeStamps.length; i++) {
    String[] parts = timeStamps[i].split(" ");
    X[i] = Integer.parseInt(parts[0]) * 3600 + Integer.parseInt(parts[1]) * 60 + Integer.parseInt(parts[2]);
}
System.out.println(Arrays.toString(X)); // [36610, 36616, 36650]

パースでの例を参照するには、あなたがパースにと同じですが、より高価なを取得していることがわかります LocalTime

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("HH mm ss");
for (int i = 0; i < timeStamps.length; i++) {
    LocalTime time = LocalTime.parse(timeStamps[i], fmt);
    X[i] = time.getHour() * 3600 + time.getMinute() * 60 + time.getSecond();
}
System.out.println(Arrays.toString(X)); // [36610, 36616, 36650]

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=389754&siteId=1