Tuesday, April 12, 2011

Year 2038 Problem

Dipercayai tahun 2038 akan menyebabkan beberapa software akan gagal berfungsi. ini disebabkan oleh "rounding error" apabila software yang didevelop dengan C yang gunekan fungsi time_t. time_t ni adalah datatype (defined dari time.h) yang 'diakui' oleh ISO C yang diukur dari 1 Januari 1970.

Dalam C, nilai maksimum untuk signed integer (32-bit) adalah 2,147,483,647 (hex: 0x7FFFFFFF). so, the problem is apabila tiba masa (int a = 0x7FFFFFFF) iaitu pada 3:14:7 pagi 19 Januari 2038. dan untuk saat berikutnye, iaitu a+1, a akan jadi 0x80000000, tapi disebabkan melebihi had maksimum untuk integer, maka "DateTime" akan direset balik ke tahun 1901 (sebab value a sekarang jadi -2,147,483,648).

kebanyakkan sistem unix 32-bit akan mengalami masalah ini, disebabkan hampir keseluruhan applikasi unix dibangunkan dengan C.


Picture illustrating the problem from wikipedia






.NET

program yang dibangunkan dengan .NET pulak 'selamat' dari problem ini disebabkan DateTime (structure untuk hold time) akan return data type long (maksimum value untuk long/int64 adalah 9,223,372,036,854,775,807) - unless kalo ade sape sape yang main main dengan date gune COM object.

Thanks pd yg support blog ni.jgn lupa Follow & Click advertisement mcm nuffnung & Heartbeat

http://en.wikipedia.org/wiki/Year_2038_problem
http://fafa-null2.blogspot.com/2007/03/artikel-masalah-tahun-2038.html

No comments:

Post a Comment

powered by Blogger | WordPress by Newwpthemes | Converted by BloggerTheme