有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将字符串转换为日期的格式不正确

我正在尝试将字符串“05/09/20”转换为显示全年的日期格式

这似乎是一个足够简单的过程,但SimpleDateFormat将年份返回为“0020”

下面是一个示例代码

import java.text.SimpleDateFormat;  
import java.util.Date;  
public class StringToDateExample1 {  
public static void main(String[] args)throws Exception {  
  SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
  String dateInString="05/09/20";
  Date date =  formatter.parse(dateInString);
  System.out.println(formatter.format(date));
}  
} 

有人知道为什么会这样吗

注意:如果我将简单日期格式设置为MM/dd/yy,它就知道年份是2020年


共 (1) 个答案

  1. # 1 楼答案

    你需要用格式化程序"MM/dd/yy"解析,用格式化程序"MM/dd/yyyy"

    这是因为格式化程序只是塑造基础日期的表示形式。因此,如果您想读取一种格式,并写入另一种格式,则需要使用一个格式化程序,通过将所需格式的字符串转换为日期对象(没有固有格式),将该日期传递给一个不同的格式化程序,该格式化程序将其格式化为您想要写入的格式

    因此,您将执行以下操作:

    "05/09/20" (string of a certain format) 
    -A-> 
    {May Ninth 2020} (date, no specific format, it's just an object) 
    -B-> 
    "05/09/2020" (date expressed as a string in a different format)
    

    请注意B不是A的反面,因此单个格式化程序不能同时执行这两个操作