java 如何从给定的字符串中获取日期部分?

eivnm1vs  于 2023-01-01  发布在  Java
关注(0)|答案(4)|浏览(160)

我有这样的字符串:
第一个月
现在我只需要日期,即14 May 2012
我应该怎么做呢?

rjzwgtxy

rjzwgtxy1#

正确的方法是将其解析为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);
    • 输出:**
14 May 2012

此代码为

  • 更易于维护(如果输出格式稍有变化,而输入格式保持不变,或者反之亦然?)
  • 可以说更容易阅读

比任何依赖于拆分字符串、固定索引上的子字符串或正则表达式的解决方案都要好。

nkoocmlb

nkoocmlb2#

为什么不使用DateFormatparse()字符串,这将给予你一个Date对象,把这个Date给一个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,它可以很容易地给予你任何你想要的字段(例如,如果你想用其中一个字段值执行一些处理),它也可以用于计算或其他许多目的,这实际上取决于你想在得到日期之后做什么。

tzxcd3kk

tzxcd3kk3#

Java.时间

accepted answer使用SimpleDateFormat,这在2012年是正确的做法。2014年3月,java.util日期-时间API及其格式化API SimpleDateFormatmodern Date-Time API取代。从那时起,强烈建议停止使用传统的日期-时间API。

    • 使用现代日期-时间API的解决方案**:
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);
    }
}
    • 输出**:
14 May 2012

ONLINE DEMO
从**Trail: Date Time**了解有关现代日期-时间API的更多信息。

gmol1639

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

相关问题