【问题标题】:How to convert my given string to date format? [duplicate]如何将我给定的字符串转换为日期格式? [复制]
【发布时间】:2018-07-26 12:14:12
【问题描述】:

我在这个 dob 键中有 JsonObject 包含日期格式,但我不希望这种格式如何转换它...

String dobDate=String.valueOf(gridData.get("DOB"));

它返回的字符串是:2006-12-31T18:30:00.000Z

但我想将此日期转换为"dd-MM-yyyy" 我怎么能这样做。

【问题讨论】:

  • SimpleDateFormat f= new SimpleDateFormat("dd-MM-yyyy");字符串日期 = f.format(dobDate); System.out.println(date);
  • 最好使用Instant instant = Instant.parse("2006-12-31T18:30:00.000Z"); from java.time
  • 您想要哪个时区的日期?例如,如果您在印度,则您的字符串等于当地时间 2007-01-01T00:00。地球上的任何地方都不会是同一个日期。

标签: java json java-8


【解决方案1】:

我很确定这个问题是重复的!
但这是答案:
这使用 Date 对象的旧方法

SimpleDateFormat format  = new SimpleStringFormat("yyyy-MM-ddTHH:mm:ss.zzZ");
Date d = format.parse("Your date String return thing");

然后你有一个Date 对象,
(我不完全确定模式是否正确) 如果你需要它作为字符串:

To get a String out of it use:
String newDateFormat = format.format(d);

上面的方法是有效的。如果你有兴趣以“现代”的方式来做,
看看这些课程:


我认为时间处理是一个复杂的话题,如果你使用它,你应该调查一下!

【讨论】:

  • 请不要教年轻人使用早已过时且臭名昭著的SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time, the modern Java date and time API 的表现要好得多。
  • 感谢您的编辑。 CalendarGregorianCalendar 几乎不是现代的,尽管他们确实试图解决 Date 中的一些设计问题。无论如何,java.time 已经完全取代了它们。您提到的InstantLocalDate 是推荐使用的类。
【解决方案2】:

如果你有 java.util.Date 你可以使用这个

SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
String formatted = df.format(gridData.get("DOB"));

【讨论】:

  • 请不要教年轻人使用陈旧而臭名昭著的SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time, the modern Java date and time API 的表现要好得多。
  • 当我使用它时它不能作为接受的日期 dobDate=sdf.parse(String.valueOf(gridData.get("DOB")));字符串 dobMap=sdf.format(dobDate);
  • 你使用了错误的模式
  • 它更像这样 yyyy-MM-ddTHH:mm:ss.zzZ 我不知道它是否有效,但它似乎是一个更合适的解决方案
猜你喜欢
  • 2012-01-31
  • 1970-01-01
  • 2018-08-30
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
相关资源
最近更新 更多