如何准确判断 操作系统 时间采用哪种小时制?
24的 晚上凌晨就是00:00:00
12小时的就是  12:00:00  也就是 新一天来临 那一刻 程序要 触发事件!

解决方案 »

  1.   

     系统时间其实就是浮点数,与小时制没有关系。
    你可以自己将时间格式化成24小时进制即可比如:
    var
      s:string;
    s:=formatdatetime('yyyy"年"m"月"d"日"h"时"n"分"s"秒"',now);
      

  2.   

    楼上 所言既是
      s := FormatDateTime('HH:NN:SS', Now); //注意这里 小时 分钟 h n 必须   s 可选
      ShowMessage('24小时制时间是:' + s);
    多谢提醒
      

  3.   

    系统当前时间,nownow  是 TDataTime类型,是一个Double浮点数。
    这个浮点数的整数位记录年月日,小数位记录时分秒毫秒。
    参考EncodeTime源码,
        Time := (Hour * (MinsPerHour * SecsPerMin * MSecsPerSec) +
                 Min * (SecsPerMin * MSecsPerSec) +
                 Sec * MSecsPerSec +
                 MSec) / MSecsPerDay;
    不难得出:当新一天来临 那一刻Time = 0.即小数位=0,整数位自增1。所以是要判段 now的整数位是否改变,即可得出当前是否凌晨。下面的代码仅供参考:procedure TForm1.Timer1Timer(Sender: TObject);
    begin
        cur_date := Trunc(now);
        if cur_date > pre_date then  
        begin
            pre_date := cur_date;
            ShowMessage('Tt is time!');
        end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
        per_date := Trunc(now);
    end;//完毕
      

  4.   

    cur_date pre_date 都是整型
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      s: string;
    begin
      GetFormatSettings;
      s := LongTimeFormat;
      if copy(s, 1, 2) = 'H' then
        showmessage('24小时制式')
      else
        showmessage('12小时制式');
    end;
      

  6.   

    楼上的 copy(s, 1, 2) = 'H' 这是拷贝两个字节出来,怎么会等于H呢,是不是写错了