Java simpledateformat为月份

时间:2017-09-22 05:15:54

标签: java simpledateformat java-date

这可能是重复的,但我无法弄清楚为什么月份在指定为MMM时返回为零,并且与mm(数字)配合良好。这里的任何帮助都会非常感激吗?

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Date;
import java.util.Locale;

 public class time1 {

 public static void main(String[] args) {

    DateFormat originalFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
    DateFormat targetFormat = new SimpleDateFormat("yyyy-mm-dd");
    Date date = null;
    try {
            date = originalFormat.parse("26-Aug-2011");
    } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    }
    String formattedDate = targetFormat.format(date);
    System.out.println("old date: " + date);
    System.out.println("new date: " + formattedDate);
 }
}

输出结果为:

旧日期:8月26日星期五00:00:00 IST 2011年 新日期:2011-00-26

当格​​式更改为dd-mm-yyyy且日期为26-08-2011时,输出为

旧日期:1月26日星期三00:07:00 IST 2011年 新日期:2011-07-26

我无法理解MMM失败的原因,所有日期都采用格式(2011年8月26日),我需要将它们转换为yyyy-mm-dd(26-07-2011)

2 个答案:

答案 0 :(得分:4)

java.time

你正在使用现在遗留下来的麻烦的旧日期时间类,取而代之的是java.time类。

String input = "26-Aug-2011" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MMM-uuuu" , Locale.US ) ;
LocalDate ld = LocalDate.parse( input , f ) ;

您希望YYYY-MM-DD的输出格式符合underscores in property names will be converted to hyphens标准。在解析/生成字符串时,java.time类默认使用标准格式。

String output = ld.toString() ;
  

2011-08-26

请参阅此ISO 8601

关于java.time

code run live at IdeOne.com框架内置于Java 8及更高版本中。这些类取代了麻烦的旧java.time日期时间类,例如legacyjava.util.Date和& Calendar

现在位于SimpleDateFormatJoda-Time项目建议迁移到maintenance mode类。

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

从哪里获取java.time类?

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

答案 1 :(得分:3)

Clang我可以说

DateFormat targetFormat = new SimpleDateFormat("yyyy-MM-dd");
// this gives you the Date in Digits.

需要更改为

old date: Fri Aug 26 00:00:00 IST 2011
new date: 2011-08-26

根据文件,

  

' M'用于年份的月份,而
  '米'用于小时分钟。

因此,你的' mm'返回默认值为00:00的分钟,这是您获得的输出。这将为您提供以下输出。

class AddList extends Component {
constructor(props){
  super(props);
  this.state = { hidden: true };
}