繁体   English   中英

在 Java 中将日期从 MM/dd 更改为 yyyy-MM-dd'T'HH:mm:ss.SSZ

[英]Change date from MM/dd to yyyy-MM-dd'T'HH:mm:ss.SSZ in Java

我有一个格式化为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

在问题中,日期格式模式表示需要 2 位小数秒。 SimpleDateFormat无法做到这一点。

较新的 Java 8 次 API 可以,无论如何您都应该使用它。

如果您在 Java 6 或 7 上运行,请获取ThreeTen-Backport库。

要在默认时区解析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")));

样品 Output

2020-06-05T14:52:48.45-0400

我建议使用java.time package。 你有 go:

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格式器之一来获得所需的 output。

对于这么简单的事情,我建议采用不同的方法,获取当前时间,然后从原始字符串 THEN 格式设置月份和日期。

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()));

您正在创建只有月份和日期的日期如果要使用当前年份和时间,可以创建日历 object 并编辑月份和日期

String strDate = "06-05";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-"+strDate+"'T'HH:mm:ss.SSZ");
System.out.println(sdf.format(new Date()));

output:

2020-06-05T23:00:45.306+0400

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM