我有这样的字符串:第一个月现在我只需要日期,即14 May 2012我应该怎么做呢?
14 May 2012
rjzwgtxy1#
正确的方法是将其解析为Date对象,并按照您想要的方式格式化此日期对象。
Date
DateFormat inputDF = new SimpleDateFormat("EEE, d MMM yyyy H:m:s z"); DateFormat outputDF = new SimpleDateFormat("d MMM yyyy"); String input = "Mon, 14 May 2012 13:56:38 GMT"; Date date = inputDF.parse(input); String output = outputDF.format(date); System.out.println(output);
此代码为
比任何依赖于拆分字符串、固定索引上的子字符串或正则表达式的解决方案都要好。
nkoocmlb2#
为什么不使用DateFormat来parse()字符串,这将给予你一个Date对象,把这个Date给一个Calendar,你就可以查询任何你想要的字段,比如get(Calendar.DAY_OF_MONTH)。像这样的事...
DateFormat
parse()
Calendar
get(Calendar.DAY_OF_MONTH)
SimpleDateFormat myDateFormat = new SimpleDateFormat("EEE, d MMM yyyy H:m:s z"); Date myDate = myDateFormat.parse(inputString); Calendar myCalendar = Calendar.getInstance(); myCalendar.setTime(myDate); String outputDate = myCalendar.get(Calendar.DAY_OF_MONTH) + " " + myCalendar.get(Calendar.MONTH) + " " + myCalendar.get(Calendar.YEAR);
写起来可能有点长,但至少你最终得到了一个Calendar,它可以很容易地给予你任何你想要的字段(例如,如果你想用其中一个字段值执行一些处理),它也可以用于计算或其他许多目的,这实际上取决于你想在得到日期之后做什么。
tzxcd3kk3#
accepted answer使用SimpleDateFormat,这在2012年是正确的做法。2014年3月,java.util日期-时间API及其格式化API SimpleDateFormat被modern Date-Time API取代。从那时起,强烈建议停止使用传统的日期-时间API。
SimpleDateFormat
java.util
import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Locale; class Main { public static void main(String[] args) { String stdDateTime = "Mon, 14 May 2012 13:56:38 GMT"; ZonedDateTime zdt = ZonedDateTime.parse(stdDateTime, DateTimeFormatter.RFC_1123_DATE_TIME); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM uuuu", Locale.ENGLISH); String strDate = zdt.format(formatter); System.out.println(strDate); } }
ONLINE DEMO从**Trail: Date Time**了解有关现代日期-时间API的更多信息。
gmol16394#
您可以使用以下命令:
String st = "Mon, 14 May 2012 13:56:38 GMT"; for(int i=0;i<=st.length();i++){ if (st.charAt(i)==':') { index=i; index=index-2; break; } } String onlyDate=st.substring(4,index).trim();
4条答案
按热度按时间rjzwgtxy1#
正确的方法是将其解析为
Date
对象,并按照您想要的方式格式化此日期对象。此代码为
比任何依赖于拆分字符串、固定索引上的子字符串或正则表达式的解决方案都要好。
nkoocmlb2#
为什么不使用
DateFormat
来parse()
字符串,这将给予你一个Date
对象,把这个Date
给一个Calendar
,你就可以查询任何你想要的字段,比如get(Calendar.DAY_OF_MONTH)
。像这样的事...
写起来可能有点长,但至少你最终得到了一个
Calendar
,它可以很容易地给予你任何你想要的字段(例如,如果你想用其中一个字段值执行一些处理),它也可以用于计算或其他许多目的,这实际上取决于你想在得到日期之后做什么。tzxcd3kk3#
Java.时间
accepted answer使用
SimpleDateFormat
,这在2012年是正确的做法。2014年3月,java.util
日期-时间API及其格式化APISimpleDateFormat
被modern Date-Time API取代。从那时起,强烈建议停止使用传统的日期-时间API。ONLINE DEMO
从**Trail: Date Time**了解有关现代日期-时间API的更多信息。
gmol16394#
您可以使用以下命令: