为什么这些日期相差 1 天?
Why is there a 1 day difference in these dates?
我正在试验 DateFormat,我遇到了一个问题,我正在创建一个日期,将其存储为一个字符串,然后将其解析回一个日期,结果以相同但不同的日期结束星期几。
import java.text.*;
import java.util.*;
public class Dates {
public static void main (String [] args) {
Date d1 = new Date(1000000000000000L);
System.out.println("d1 = " + d1.toString());
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
String s = df.format(d1);
System.out.println(s);
try {
Date d2= df.parse(s);
System.out.println( "Parsed Date = " + d2.toString());
} catch (ParseException e) {
System.out.println("Parse Exception");
}
}
}
我得到了输出;
d1 = Fri Sep 27 02:46:40 BST 33658
27/09/58
Parsed Date = Sat Sep 27 00:00:00 BST 1958
如果我将 d1 中的毫秒数变小,那么当日期被解析回来时,它会按照我期望的方式工作,解析的日期与初始日期匹配。
不知道怎么回事,谁能解释一下?
当您将原始年份 33658 存储为字符串时,它被缩短为“58”,然后当您读回它时(合理地)被解释为 1958。
9 月 27 日是 1958 年的星期六,但在 33658 年是星期五。d1
中的毫秒数较少,您正在创建现实的年份,因此不会发生不匹配。
如果您不想丢失信息,则需要使用更完整的 DateFormat
选项。
我正在试验 DateFormat,我遇到了一个问题,我正在创建一个日期,将其存储为一个字符串,然后将其解析回一个日期,结果以相同但不同的日期结束星期几。
import java.text.*;
import java.util.*;
public class Dates {
public static void main (String [] args) {
Date d1 = new Date(1000000000000000L);
System.out.println("d1 = " + d1.toString());
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
String s = df.format(d1);
System.out.println(s);
try {
Date d2= df.parse(s);
System.out.println( "Parsed Date = " + d2.toString());
} catch (ParseException e) {
System.out.println("Parse Exception");
}
}
}
我得到了输出;
d1 = Fri Sep 27 02:46:40 BST 33658
27/09/58
Parsed Date = Sat Sep 27 00:00:00 BST 1958
如果我将 d1 中的毫秒数变小,那么当日期被解析回来时,它会按照我期望的方式工作,解析的日期与初始日期匹配。
不知道怎么回事,谁能解释一下?
当您将原始年份 33658 存储为字符串时,它被缩短为“58”,然后当您读回它时(合理地)被解释为 1958。
9 月 27 日是 1958 年的星期六,但在 33658 年是星期五。d1
中的毫秒数较少,您正在创建现实的年份,因此不会发生不匹配。
如果您不想丢失信息,则需要使用更完整的 DateFormat
选项。