我有一个格式化为MM/dd的字符串。我想把它转换成yyyy-MM-dd'T'HH:mm:ss.SSZ格式的日期。
DateFormat df = new SimpleDateFormat("MM/dd");
String strDate = "06/05";
Date date = new Date();
date = df.parse(strDate);这使得它成为一个日期,但以原来的格式。
System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSZ").format(date));这将返回正确的月份和日期,但不返回其他日期。
1970-06-05T00:00:00.00-0400你知道我怎么才能让它回来吗?
CURRENT_YEAR-06-05TCURRENT_TIME发布于 2020-06-30 18:52:57
在这个问题中,日期格式模式表示对2位小数秒的需求.SimpleDateFormat不能那么做。
更新的Java 8 Time API可以,您应该使用它。
如果在Java 6或7上运行,则获取三次-支持库。
若要解析MM/dd格式的字符串并在默认时区获得具有当前年份和时间的完整时间戳,请使用以下代码:
String strDate = "06/05";
MonthDay monthDay = MonthDay.parse(strDate, DateTimeFormatter.ofPattern("MM/dd"));
ZonedDateTime date = ZonedDateTime.now().with(monthDay);
System.out.println(date.format(DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSZ")));样本输出
2020-06-05T14:52:48.45-0400发布于 2020-06-30 18:49:08
我建议使用java.time包。就这样吧:
var ds = "01/12";
var df = java.time.format.DateTimeFormatter.ofPattern("MM/dd");
var dt = java.time.MonthDay.from(df.parse(ds)).adjustInto(java.time.LocalDateTime.now());然后,您可以将dt转换为java.util.Date或任何您喜欢的东西。或者简单地使用一个java.time格式化程序来获得所需的输出。
发布于 2020-06-30 18:23:11
对于如此简单的内容,我建议采用另一种方法,获取当前时间,然后从原始字符串中设置月和日,然后设置格式。
String str = "08/09";
String[] split = str.split("/");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, Integer.parseInt(split[0]));
calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(split[1]));
System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").format(calendar.getTime()));https://stackoverflow.com/questions/62663710
复制相似问题