使用SimpleDateFormat分别获取日,月和年

时间:2014-04-10 13:43:47

标签: java android date simpledateformat

我有SimleDateFormat这样的

SimpleDateFormat format = new SimpleDateFormat("MMM dd,yyyy  hh:mm");
String date = format.format(Date.parse(payback.creationDate.date));

我的日期格式为"Jan,23,2014"

现在,我希望分别获得日,月和年。我该如何实现呢?

8 个答案:

答案 0 :(得分:14)

如果您需要单独获取值,请使用多个SimpleDateFormat

SimpleDateFormat dayFormat = new SimpleDateFormat("dd");
String day = dayFormat.format(Date.parse(payback.creationDate.date));

SimpleDateFormat monthFormat = new SimpleDateFormat("MM");
String month = monthFormat .format(Date.parse(payback.creationDate.date));

答案 1 :(得分:14)

    SimpleDateFormat format = new SimpleDateFormat("MMM dd,yyyy  hh:mm", Locale.ENGLISH);

    Date theDate = format.parse("JAN 13,2014  09:15");

    Calendar myCal = new GregorianCalendar();
    myCal.setTime(theDate);

    System.out.println("Day: " + myCal.get(Calendar.DAY_OF_MONTH));
    System.out.println("Month: " + myCal.get(Calendar.MONTH) + 1);
    System.out.println("Year: " + myCal.get(Calendar.YEAR));

答案 2 :(得分:7)

哇,SimpleDateFormat获取字符串部分?如果输入字符串类似于“Jan,23,2014”:

,则可以更容易地解决
String input = "Jan,23,2014";
String[] out = input.split(",");
System.out.println("Year = " + out[2]);
System.out.println("Month = " + out[0]);
System.out.println("Day = " + out[1]);

输出:

Year = 2014
Month = Jan
Day = 23

但如果您因某种原因确实想使用SimpleDateFormat,解决方案将如下:

String input = "Jan,23,2014";
SimpleDateFormat format = new SimpleDateFormat("MMM,dd,yyyy");
Date date = format.parse(input);
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
calendar.setTime(date);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(new SimpleDateFormat("MMM").format(calendar.getTime()));

输出:

2014
23
Jan

答案 3 :(得分:4)

此处接受的答案建议使用多个SimpleDateFormat,但可以使用一个SimpleDateFormat实例并调用applyPattern来执行此操作。

注意:我相信这篇文章对于那些像我一样搜索setPattern()的人也会有所帮助。

Date date=new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
simpleDateFormat.applyPattern("dd");
System.out.println("Day   : " + simpleDateFormat.format(date));
simpleDateFormat.applyPattern("MMM");
System.out.println("Month : " + simpleDateFormat.format(date));
simpleDateFormat.applyPattern("yyyy");
System.out.println("Year  : " + simpleDateFormat.format(date));

答案 4 :(得分:3)

TL;博士

使用LocalDate课程。

LocalDate
.parse(
    "Jan,23,2014" , 
    DateTimeFormatter.ofPattern( "MMM,dd,uuuu" , Locale.US )
)
.getYear()

...或.getMonthValue().getDayOfMonth

java.time

其他答案使用过时的类。 java.time类取代了那些麻烦的旧遗留类。

LocalDate

LocalDate类表示没有时间且没有时区的仅限日期的值。

String input = "Jan,23,2014";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM,d,uuuu" );
LocalDate ld = LocalDate.parse( input , f );

询问您想要的部件。

int year = ld.getYear();
int month = ld.getMonthValue();
int dayOfMonth = ld.getDayOfMonth();

关于 java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*类。

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore

答案 5 :(得分:1)

你接受了吗?

int day = 25 ; //25
int month =12; //12
int year = 1988; // 1988
Calendar c = Calendar.getInstance();
c.set(year, month-1, day, 0, 0);    
SimpleDateFormat format =   new SimpleDateFormat("MMM dd,yyyy  hh:mm");
System.out.println(format.format(c.getTime()));

显示为Dec 25,1988 12:00

更新:基于评论

DateFormat format =   new SimpleDateFormat("MMM");
System.out.println(format.format(format.parse("Jan,23,2014")));

注意:Date.parse()是@deprecated,根据API,建议使用DateFormat.parse

答案 6 :(得分:1)

用此解析“Jan,23,2014”

SimpleDateFormat fmt = new SimpleDateFormat("MMM','dd','yyyy"); 
Date dt = fmt.parse("Jan,23,2014");

那么你可以得到约会的任何部分。

答案 7 :(得分:0)

public static String getDate(long milliSeconds, String dateFormat) {
        // Create a DateFormatter object for displaying date in specified
        // format.
        SimpleDateFormat formatter = new SimpleDateFormat(dateFormat,
                Locale.getDefault());

        // Create a calendar object that will convert the date and time value in
        // milliseconds to date.
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(milliSeconds);
        return formatter.format(calendar.getTime());
    }