有人知道2002-11-6怎么存成文本文件后会变成1036512000的吗? (300分)

  • 主题发起人 主题发起人 zzf888
  • 开始时间 开始时间
Z

zzf888

Unregistered / Unconfirmed
GUEST, unregistred user!
2002-11-7 1036598400
2002-11-8 1036684800

请大家帮帮忙!要分的还可以加!不会的也帮我提前一下,有分的!
 
怎么存的? 是你存的吗? 代码呢?....


 
不是我存的,别人存的,不知道代码,我现在就是想要代码呀!
 
TDateTime本来就是一个浮点数(好象从1899-12-31 24:00:00开始的),
日期未为整数部分,时间是小数部分,
可以用强制转换测试一下。
 
呵呵, 两种可能。
1、如gmxyb所说。 不过可能性不大。
2、加密了。
 
我找到了一点规律,你看一下:
2002-11-6 1036512000/86400=11996.666666666666666666666666667
2002-11-7 1036598400/86400=11997.666666666666666666666666667
2002-11-8 1036684800/86400=11998.666666666666666666666666667
...
你可以再多看几个,应该找得到规律。
(注:86400=60*60*24,有数了吧?)
 
C++Builder的代码为:
#include <time.h>

struct tm tt;
long aa;
tt.tm_year = 2002 - 1900;
tt.tm_mon = 11 - 1;
tt.tm_mday = 7;
tt.tm_hour = 1;
tt.tm_min = 0;
tt.tm_sec = 0;
tt.tm_isdst - 1;
aa = (long)mktime(&tt); //aa=1036598400
ShowMessage((AnsiString)aa);
 
c语言用time_t,也就是long,来计算时间,是1970-1-1到当前的秒数,这也是unix表达时间的方法
而且,他是用了标准时间,所以还要加上8个小时才是本地时间
(无关的话:这种方法计算时间,到2038年就会超过2G秒,32位整数的话,就会变成负数,
到时候会出现类似2000年问题的时间问题,会影响一些系统,不过到2038年很多系统都应该淘汰了吧)

 
可能是ShortDateFormat设置有问题。
 
先用函数Datetostr()转换为字符串,再保存就不是那样的啦
 
这是1970-1-1 00:00:00到你指定的时间的秒数
和UNIX里面的一样。
不会是别的问题。
如果你玩文字MUD的话,可以用巫师权限试出来。
我原来做过XYJ的巫师,所以一看到就有种似曾相识的感觉.
:)
 
能给个运行通过的算法吗?
 
EncodeDate(1970,1,1) + 1036598400/60.0/60.0/24.0 + 8/24
就是delphi的datetime类型了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部