15

如何从字符串中提取日、月和年值 [如 18/08/2012]。我尝试使用 SimpleDateFormat,但它返回一个 Date 对象,并且我观察到所有 Get 方法都已弃用。有没有更好的方法来做到这一点?

谢谢

4

8 回答 8

22

我个人会使用Joda Time,这让生活变得相当简单。特别是,这意味着您无需担心Calendara 的时区与 a 的时区SimpleDateFormat- 您只需解析为 a LocalDate,这就是数据真正向您显示的内容。这也意味着您不必担心月份是从 0 开始的 :)

Joda Time 使许多日期/时间操作更加愉快。

import java.util.*;
import org.joda.time.*;
import org.joda.time.format.*;

public class Test {

    public static void main(String[] args) throws Exception {
        DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy")
            .withLocale(Locale.UK);

        LocalDate date = formatter.parseLocalDate("18/08/2012");

        System.out.println(date.getYear());  // 2012
        System.out.println(date.getMonthOfYear()); // 8
        System.out.println(date.getDayOfMonth());   // 18
    }
}
于 2012-08-20T17:44:19.593 回答
17

简单地去String.split()

String str[] = "18/08/2012".split("/");
int day = Integer.parseInt(str[0]);
int month = Integer.parseInt(str[1]);
..... and so on
于 2012-08-20T18:04:12.677 回答
9

这应该让您无需添加外部罐子即可

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");  
Date parse = sdf.parse("18/08/2012");  
Calendar c = Calendar.getInstance();  
c.setTime(parse);  
System.out.println(c.get(Calendar.MONTH) + c.get(Calendar.DATE) + c.get(Calendar.YEAR)); 
于 2012-08-20T17:58:48.523 回答
5

按如下方式创建该日期之外的 java.util.Calendar 对象并提取日期部分:

Calendar cal = Calendar.getInstance();
cal.setTime(<date from simple-date-format).
cal.get(Calendar.MONTH);

ETC。,

于 2012-08-20T17:41:45.167 回答
4
于 2018-01-19T21:54:17.230 回答
2

另一种方法可能是使用Calendar对象get(Calendar.MONT)

例子:

Calendar cal = Calendar.getInstance();
cal.setTime(dateObj).
cal.get(Calendar.MONTH);

(或者)

您也可以使用String.split()

于 2012-08-20T17:42:01.050 回答
2

使用它并传递日期值

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault());
Date parse = sdf.parse("18/01/2018");
Calendar calendar = Calendar.getInstance();
calendar.setTime(parse);
int date = calendar.get(Calendar.DATE);
//+1 Is Important Because if the month is January then coming 0 so Add +1
int month = calendar.get(Calendar.MONTH)+1;
int year = calendar.get(Calendar.YEAR);
System.out.println("Date:"+date +":Month:"+ month + ":Year:"+year);
于 2018-01-18T09:12:02.473 回答
0

在其中,字符串以元素的形式存储在一个数组中,并且在 split() 函数的帮助下,我将它分离并从数组 str[] 中检索并存储在 3 个不同的变量日、月和年中。

导入 java.util.*;

public class date {

    public static void main(String[] args) throws Exception {
        String str[] = "18/08/2012".split("/");
        int day = Integer.parseInt(str[0]);
        int month = Integer.parseInt(str[1]);
        int year = Integer.parseInt(str[2]);
        System.out.println(day);
        System.out.println(month);
        System.out.println(year);
    }
}
于 2020-01-25T07:08:03.513 回答