Sự khác biệt trong hàm tính thời gian của C# và Javascript

Bữa rảnh rỗi nhớ người yêu cũ nên bèn tính số ngày mà 2 đứa quen nhau tới hiện tại, thì mình phát hiện ra như vầy.

Trong C# mình tính số milisecond từ ngày 1/1/1970 tới ngày 2/1/1970 với code như sau

   static string CalcDate(DateTime d1, DateTime d2)
    {
        return Math.Abs((d1 - d2).TotalMilliseconds).ToString();
    }

kết quả sẽ ra là 86400000

Mình mới bèn thử bên javascript với code như như bên dưới

function myFunction() {
    var d = new Date(1970,1,2);
    var n = d.getTime();}

Và kết quả nhận được là 2739600000

Hàm getTime() trong JS sẽ trả về số milisecond từ ngày 1/1/1970.

1 ngày chính xác là có 86400000 miliseconds.

Tại sao lại có sự chênh lệch kết quả như trên vậy nhỉ các bác! Ai giải thích giúp mình với.

  1. Object Date nhận tháng từ 0 (0 = tháng 1, 1 = tháng 2, …)
  2. Khi sửa thành 0 rồi nó vẫn sẽ sai 1 chút vì nó sẽ tính theo giờ local.
3 Likes

bác chuẩn lun, sửa lại thì nó lệch 7 tiếng so vs giờ gốc

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?