لماذا طرح طابعين زمنيين بالمللي ثانية (عام 1927) يعطي نتيجة غريبة؟
مرحباً بالجميع! أنا مبتدئ في Java، وأتعامل مع التواريخ والأوقات. كتبت كوداً بسيطاً يحسب الفرق بين نقطتين زمنيتين بالمللي ثانية. لكن النتيجة صدمتني!
هذا هو الكود الخاص بي:
```java
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class StrangeDateDifference {
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
Date date1 = sdf.parse("1927-12-31 23:54:07");
Date date2 = sdf.parse("1927-12-31 23:54:08");
long diffInMillis = date2.getTime() - date1.getTime();
System.out.println("الفرق بالمللي ثانية: " + diffInMillis);
}
}
```
كنت أتوقع رؤية 1000 مللي ثانية (ثانية واحدة)، لكن الناتج هو **-353**! كيف هذا ممكن؟ أليست الثانية الواحدة تساوي 1000 مللي ثانية؟ لماذا الفرق سالب؟ أنا