Java 中的日期时间格式

DateTime format in Java

我有以下内容,我得到了时间,但我想增加时间。我没有运气。我试过 SimpleDateTime 但似乎无法获得正确的语法。

package com.sayitfast.service;

import com.google.gson.Gson;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.StandardCharsets;


public class TimeData {
    private String time;
    private Long milliseconds_since_epoch;
    private String date;

    @Override
    public String toString() {
        return "TimeData" + "time=" + time + ", milliseconds_since_epoch="
                + milliseconds_since_epoch + ", date=" + date;
    }

    public void TimeData() {

    }

    public void mytimdData() throws IOException {
        String webPage = "http://time.jsontest.com";

        InputStream is = nw URL(webPage).openStream();
        final Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8);

        Gson gson = new Gson();
        TimeData td = gson.fromJson(reader, TimeData.class);

        System.out.println(td.time);
    }
}

您可能需要添加

 String webPage = "http://time.jsontest.com";

            InputStream is = new URL(webPage).openStream();
            final Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8);

            Gson gson = new Gson();
            TimeData td = gson.fromJson(reader, TimeData.class);

            System.out.println(td.toString());
            
            System.out.println(td.getTime());
            DateFormat formatter = new SimpleDateFormat("hh:mm:ss a");
            Date date = (Date)formatter.parse(td.getTime());
            
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.HOUR_OF_DAY, 1);
           Date dates = cal.getTime();
            System.out.println(dates);

这里我把时间增加到了1小时。这是您可以根据需要更改的示例

此外,您可以使用 Date incrementedDate = DateUtils.addHour(date, 1); 而不是 Calender

我建议您从过时且容易出错的 java.util 日期时间 API 切换到 rich set of modern date-time API 并按如下方式进行(包括一些自定义格式的演示) ):

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class Main {
    public static void main(final String[] args) {
        // Custom formats
        DateTimeFormatter formatter24Hour = DateTimeFormatter.ofPattern("HH:mm:ss");
        DateTimeFormatter formatter12Hour = DateTimeFormatter.ofPattern("hh:mm:ss a");

        // Get the number of milliseconds from the epoch of 1970-01-01T00:00:00Z.
        long epochMilli = Instant.now().toEpochMilli();
        System.out.println("The number of milliseconds from the epoch is " + epochMilli);
        System.out.println();

        // Get Instant from the number of milliseconds from the epoch
        Instant instant = Instant.ofEpochMilli(epochMilli);

        // Get LocalDateTime from Instant
        ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());// Use the zone as per your requirement
        LocalDateTime ldt = zdt.toLocalDateTime();
        System.out.println("Date-time in your time-zone: " + ldt);
        System.out.println("Time in your time-zone: " + ldt.format(DateTimeFormatter.ISO_LOCAL_TIME));
        System.out.println("Time in your time-zone: " + ldt.format(formatter24Hour));
        System.out.println("Time in your time-zone: " + ldt.format(formatter12Hour));
        System.out.println();

        // Add some hours e.g. 2 hours to LocalDateTime
        LocalDateTime newDateTime = ldt.plus(2, ChronoUnit.HOURS);
        System.out.println("Date-time in your time-zone after 2 hours: " + newDateTime);
    }
}

输出:

The number of milliseconds from the epoch is 1593532251048

Date-time in your time-zone: 2020-06-30T16:50:51.048
Time in your time-zone: 16:50:51.048
Time in your time-zone: 16:50:51
Time in your time-zone: 04:50:51 pm

Date-time in your time-zone after 2 hours: 2020-06-30T18:50:51.048