你确信你了解时间吗?

你还记得“软件真的好难做”中的那个有意思的例子吗?那个例子告诉我们软件开发中假设可能会是致命的事。今天,我又在StackOverflow上看到一个关于时间的问题——为什么1927年12月31日的午夜时间这么奇怪?提问题的这个人给了下面的一段java代码(我做一些修改,保证让你可以copy过去就可以编译运行)

我在其中高亮了几行,这个程序就是想比较一下“1927-12-31 23:54:07”  和  “1927-12-31 23:54:08” 差几秒,很明显,是差一秒。但是程序的输出却不是这样的。

  1. import java.text.SimpleDateFormat;
  2. import java.text.ParseException;
  3. import java.util.Date;
  4. import java.util.TimeZone;
  5. class time{
  6.     public static void main(String[] args) throws ParseException {
  7.         SimpleDateFormat sf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
  8.         sf.setTimeZone(TimeZone.getTimeZone(“Asia/shanghai”));
  9.         String str3 = “1927-12-31 23:54:07”;
  10.         String str4 = “1927-12-31 23:54:08”;
  11.         Date sDt3 = sf.parse(str3);
  12.         Date sDt4 = sf.parse(str4);
  13.         long ld3 = sDt3.getTime() /1000;
  14.         long ld4 = sDt4.getTime() /1000;
  15.         System.out.println(ld3);
  16.         System.out.println(ld4);
  17.         System.out.println(ld4-ld3);
  18.     }
  19. }

复制代码

下面,让我们来看看程序的输出:(是的,差出353秒钟来)

-1325491905
-1325491552
353

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: