如何在 java 中以RFC3339格式添加日期和时间



我在字符串中有一个日期,在字符串中有一个时间,现在我只需要将它们以RFC 3339格式添加并将其插入到不带字符串的事件对象中。你可以在下面看到我的代码

    String date_from=req.getParameter("date_from").toString();
    String date_end=req.getParameter("date_end").toString();
    String time_from=req.getParameter("time_from").toString();
    String time_to=req.getParameter("time_to").toString();
     // here i m converting date_from which is string into Date object
    java.sql.Date dateFrom=  java.sql.Date.valueOf(date_from);
    java.sql.Date dateTo=  java.sql.Date.valueOf(date_end);


    String dateTimeStart=date_from+"T"+time_from+"Z";
    String dateTimeTo=date_end+"T"+time_to+"Z";
       //now here i just need to convert (string)dateTimeStart into object so that i able to use into my event class
           Event event = new Event();
           event.setSummary(userName);
           DateTime start = new DateTime(dateFrom, TimeZone.getTimeZone("Asia/Kolkata"));
           DateTime end = new DateTime(dateTo, TimeZone.getTimeZone("Asia/Kolkata"));

嗨,我试图更清楚地说明我的疑问是什么:

   DateTime end = new DateTime(dateTo, TimeZone.getTimeZone("Asia/Kolkata"));

请参阅上面的代码行,在第一个参数中,我希望格式为"YYYY-MM-ddTHH:mm:ssZ",我在变量"dateTo"中的日期"yyyy-MM-dd"不包含时间,it.so 以小时、因努特和秒为单位获取时间,我在变量中花费时间time_to

      String time_to=req.getParameter("time_to").toString();

我使用以下代码段转换为日期对象,并在上面的第一行中使用

     java.sql.Date dateTo=  java.sql.Date.valueOf(date_end);

我对时间所做的同样,但是当我尝试同时确认日期和时间时,当我将其用作以下代码行中的第一个参数时,它会给我一个错误

    DateTime end = new DateTime(dateTo, TimeZone.getTimeZone("Asia/Kolkata"));

使用 new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX") 解析/格式化日期。查看 SimpleDateFormat JavaDoc 了解详细信息。

使用 java.time,对RFC3339随时间配置文件进行非常严格的解释,如下所示:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.ResolverStyle;
import static java.time.temporal.ChronoField.*;
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
    .parseCaseInsensitive()
    .appendValue(YEAR, 4)
    .appendLiteral('-')
    .appendValue(MONTH_OF_YEAR, 2)
    .appendLiteral('-')
    .appendValue(DAY_OF_MONTH, 2)
    .appendLiteral('T')
    .appendValue(HOUR_OF_DAY, 2)
    .appendLiteral(':')
    .appendValue(MINUTE_OF_HOUR, 2)
    .appendLiteral(':')
    .appendValue(SECOND_OF_MINUTE, 2)
    .optionalStart()
    .appendFraction(MILLI_OF_SECOND, 0, 9, true)
    .optionalEnd()
    .appendOffset("+HH:MM", "Z")
    .toFormatter()
    .withResolverStyle(ResolverStyle.STRICT)
    .withChronology(IsoChronology.INSTANCE);
ZonedDateTime zdt = ZonedDateTime.parse("2021-09-24T12:00:00.001+02:00", formatter);
String str = zdt.format(formatter);

最新更新