Java - 如何解析0001-01-01T00:00:00Z?

时间:2017-11-22 20:28:16

标签: java parsing time

如何解析0001-01-01T00:00:00Z到我的特定时区并只显示时间?

例如: 2017-11-22T22:00:00Z 至2017-11-22 23:00

因为我的时区比第一个字符串的时区提前一小时,所以我希望你理解!

3 个答案:

答案 0 :(得分:4)

如果使用Java 8,您可以将其解析为Instant,然后将其转换为您需要的时区中的ZonedDateTime。然后,您可以从ZonedDateTime获取当地时间。

Instant instant = Instant.parse("2017-11-22T22:00:00Z");
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println(zdt.toLocalTime());

您还可以指定系统默认值以外的特定区域ID。要查看可供选择的区域ID,请使用ZoneId.getAvailableZoneIds())

使用ZonedDateTime可以处理夏令时。如果您只需要静态小时偏移量,则可以将其转换为OffsetDateTime而不是ZonedDateTime

答案 1 :(得分:1)

首先,将您的字符串解析为 public ActionResult SignUp(string email,string username,string password) { var data = db.Users.Where(x => x.Nick == username || x.Email==email).SingleOrDefault(); Users user= new Users(); if (data== null) { ModelState.AddModelError("", "Username is valid"); } else { uye.Nick = username; uye.Email = email; uye.Password= password; db.Users.Add(user); db.SaveChanges(); } return RedirectToAction("HomePage","Home"); } ,然后将其转换为所需区域中的Instant;从那里,你可以获得ZoneDateTime

LocalTime

答案 2 :(得分:-1)

Java DateFormater

main::using