Java 从日历中获取格式化字符串
我有一个Java的Java 从日历中获取格式化字符串,java,date,formatdatetime,Java,Date,Formatdatetime,我有一个Java的日历日期 我需要将其转换为字符串,格式如下: 2020-12-29T00:00:00+01:00 我怎么做 非常感谢您的帮助。通过调用获取日期对象,并使用格式为yyyy-MM-dd'T'HH:MM:ssXXX的 注意:由于所需字符串的时区偏移量为+01:00小时,因此在调用SimpleDateFormat#format之前,请确保将SimpleDateFormat对象的时区设置为timezone.getTimeZone(“GMT+1”) 演示: import java.tex
日历
日期
我需要将其转换为字符串
,格式如下:
2020-12-29T00:00:00+01:00
我怎么做
非常感谢您的帮助。通过调用获取
日期
对象,并使用格式为yyyy-MM-dd'T'HH:MM:ssXXX的
注意:由于所需字符串的时区偏移量为+01:00
小时,因此在调用SimpleDateFormat#format
之前,请确保将SimpleDateFormat
对象的时区设置为timezone.getTimeZone(“GMT+1”)
演示:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Main {
public static void main(String[] args) throws ParseException {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));
Date date = calendar.getTime();
String formatted = sdf.format(date);
System.out.println(formatted);
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Main {
public static void main(String[] args) throws ParseException {
String dateTimeString = "2020-12-29T00:00:00+01:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
Date obj = sdf.parse(dateTimeString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(obj);
// Formatting this calendar object
Date date = calendar.getTime();
sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));
String formatted = sdf.format(date);
System.out.println(formatted);
}
}
2020-12-29T00:00:00+01:00
另一个例子:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Main {
public static void main(String[] args) throws ParseException {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));
Date date = calendar.getTime();
String formatted = sdf.format(date);
System.out.println(formatted);
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Main {
public static void main(String[] args) throws ParseException {
String dateTimeString = "2020-12-29T00:00:00+01:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
Date obj = sdf.parse(dateTimeString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(obj);
// Formatting this calendar object
Date date = calendar.getTime();
sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));
String formatted = sdf.format(date);
System.out.println(formatted);
}
}
2020-12-29T00:00:00+01:00
输出:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Main {
public static void main(String[] args) throws ParseException {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));
Date date = calendar.getTime();
String formatted = sdf.format(date);
System.out.println(formatted);
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Main {
public static void main(String[] args) throws ParseException {
String dateTimeString = "2020-12-29T00:00:00+01:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
Date obj = sdf.parse(dateTimeString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(obj);
// Formatting this calendar object
Date date = calendar.getTime();
sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));
String formatted = sdf.format(date);
System.out.println(formatted);
}
}
2020-12-29T00:00:00+01:00
java.time
我建议您在日期和时间工作中使用java.time,即现代java日期和时间API
以下是所需格式的格式化程序:
private static final DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssXXX");
有了这一点,我们可以:
ZoneId zone = ZoneId.of("Asia/Barnaul");
ZonedDateTime dateTime
= LocalDate.of(2020, Month.DECEMBER, 29).atStartOfDay(zone);
String formatted = dateTime.format(formatter);
System.out.println(formatted);
此示例的输出为:
2020-12-29T00:00:00+07:00
如果你无法避免得到日历
如果您从一个旧API获得了一个Calendar
对象,而您现在无法升级到java.time,请将其转换为ZonedDateTime
。几乎可以肯定,它实际上是一个gregoriacalendar
(或者格式化为该格式没有多大意义),这使得转换变得简单
Calendar yourCalendar = getCalendarFromLegacyApi();
ZonedDateTime dateTime
= ((GregorianCalendar) yourCalendar).toZonedDateTime();
其余的和以前一样,输出也一样
如果您需要考虑日历
不是格里高利安日历
的可能性,请使用此稍微复杂的转换:
ZonedDateTime dateTime = yourCalendar.toInstant()
.atZone(yourCalendar.getTimeZone().toZoneId());
链接
解释如何使用java.time。你能解释一下“我有一个java日历日期”是什么意思吗?我有一个java日历日期。如果有任何方法可以避免的话。Calendar
类设计拙劣,过时已久。改为使用来自的ZoneDateTime
from。谢谢!!!第一个示例返回一个异常,但第二个非常有效。@Mauraglia-非常欢迎您。我再次检查了第一个示例,它运行良好。唯一的问题是,它为当前日期时间创建了一个日历
对象,我特意为演示选择了这个对象。你可以看看你是否感兴趣。不管怎样,我很高兴你的问题解决了。