delphi 时间格式操作
FormatDateTime('yyyy-mm-dd hh:nn:ss',Now)
FormatDateTime('hh:mm:ss:zz',Now)
if (TimeOf(now) < pub_StartWorkTime) or (TimeOf(now) > pub_EndWorkTime) then
exit; //非工作时间退出
读ini
pub_StartWorkTime := MyIniFile.Readtime('Setup','StartWorkTime',strtotime('08:00'));
pub_EndWorkTime := MyIniFile.Readtime('Setup','EndWorkTime',strtotime('23:59'));
Delphi中TFileTime、TSystemTime 及 DOS 时间
//TSystemTime 是系统定义的结构, 一看就是最方便实用的那种, 但要占 16 个字节:
TSystemTime = record
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end; //TFileTime 也是系统定义的结构, 同 TDateTime 一样大小, 但结构原理完全不同:
TFileTime = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
TFileTime 记录的是从 1601-1-1 起的时间值, 以 100 纳秒(也就是万分之一毫秒)为单位 //DOS 时间就是一个 32 位(4字节)的整数(Integer), 好像没有专门的结构, 可用 LongRec 等代为解析.
DOS 时间的尺寸是 TFileTime、TDateTime 的 1/2, 是 TSystemTime 的 1/4; 因此不很精确.
它只能表示从 1980-2107 之间的时间, 且只能精确到 2 秒.
//下面几个函数一看就知道谁转换到谁:
SysUtils.DateTimeToSystemTime();
SysUtils.SystemTimeToDateTime(); Windows.SystemTimeToFileTime();
Windows.FileTimeToSystemTime(); Windows.FileTimeToDosDateTime();
Windows.DosDateTimeToFileTime(); //但并没有直接给 TFileTime 和 TDateTime 直接转换的函数;
//下面两个函数是 TDateTime 和 DOS 时间的转换; 文件的创建、修改、访问时间就是用这个 DOS 时间记录的.
SysUtils.DateTimeToFileDate();
SysUtils.FileDateToDateTime(); {转换到 DOS 时间的例子:}
var
T: TDateTime;
F,DosTime: Integer;
FileTime: TFileTime;
SystemTime: TSystemTime;
begin
{构建一个 TDateTime, 并转换到 DOS 时间}
T := EncodeDateTime(2009, 5, 22, 11, 22, 33, 999);
F := DateTimeToFileDate(T);
ShowMessage(IntToStr(F)); //985029328; 注意这个数很小, 下面会发现不精确 {再从 DOS 时间转回 TDateTime}
T := FileDateToDateTime(F);
ShowMessage(FormatDateTime('yyyy-m-d h:m:s:zzz', T)); //2009-5-22 11:22:32:000; 只精确到 2 秒 {TDateTime -> TSystemTime -> TFileTime -> DOS 时间}
DateTimeToSystemTime(T, SystemTime);
SystemTimeToFileTime(SystemTime, FileTime);
FileTimeToDosDateTime(FileTime, LongRec(DosTime).Hi, longRec(DosTime).Lo);
ShowMessage(IntToStr(SizeOf(SystemTime))); //985029328; 和上面得到的值一样
end;
DateTimeToFileDate 转换出的时间不是 TFileTime, 而是 Dos 时间或叫文件时间;
譬如我们用
FileAge 函数返回的文件最后修改的时间(一个 Integer)就是个 Dos 时间.
{读取记事本程序最后被修改的时间}
var
DosTime: Integer;
FileTime: TFileTime;
SysTime: TSystemTime;
DateTime: TDateTime;
str: string;
begin
DosTime := FileAge('C:\Windows\System32\Notepad.exe');
ShowMessage(IntToStr(DosTime)); //948804037; 这是读取结果
{转换为可以理解的格式}
DosDateTimeToFileTime(LongRec(DosTime).Hi, LongRec(DosTime).Lo, FileTime);
FileTimeToSystemTime(FileTime, SysTime);
str := Format('%d年%d月%d日 %d:%d:%d', [SysTime.wYear, SysTime.wMonth,
SysTime.wDay, SysTime.wHour, SysTime.wMinute, SysTime.wSecond]);
ShowMessage(str); //2008年4月13日 19:14:10
{如果仅仅是要这个时间, 可以这样}
FileAge('C:\Windows\System32\Notepad.exe', DateTime);
ShowMessage(DateTimeToStr(DateTime)); //2008-4-13 19:14:10
end;
又是我们可能只需要一个 TSystemTime 格式的时间, 没必要转来转去, 可以直接用 GetLocalTime 函数获取:
var
SysTime: TSystemTime;
DT1, DT2: TDateTime;
begin
GetLocalTime(SysTime);
DT1 := SystemTimeToDateTime(SysTime); DT2 := Now; {这两个时间显示应该是一样的}
ShowMessage(DateTimeToStr(DT1));
ShowMessage(DateTimeToStr(DT2));
end;
另外 FileTimeToLocalFileTime 和 LocalFileTimeToFileTime 是本地时间和
UTC(国际标准计时) 的转换;
用 API 函数获取的 TFileTime 时间都是 UTC 格式的, 需要转换使用.
delphi 时间格式操作的更多相关文章
- SQL导入txt以及SQL中的时间格式操作
原文:SQL导入txt以及SQL中的时间格式操作 MySQL中导入txt的指令为: load data local infile "路径名称" into table "表 ...
- Delphi获取与设置系统时间格式,即GetLocaleInfo和SetLocaleInfo
在Delphi中,特别是在写管理系统软件时,经常要用到 FormatDateTime 以将 TDateTime 格式的日期时间转换成字符串形式的值显示或保存起来,或者用 StrToDateTime将字 ...
- Delphi获得与设置系统时间格式《转》
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, Syst ...
- 转换GMT秒数为日期时间格式-Delphi源码
转换GMT秒数为日期时间格式-Delphi源码.收藏最近在写PE分析工具的时候,需要转换TimeDateStamp字段值为日期时间格式,这是Delphi的源码. //把GMT时间的秒数转换成日期时间格 ...
- 不修改系统日期和时间格式,解决Delphi报错提示 '****-**-**'is not a valid date and time
假如操作系统的日期格式不是yyyy-MM-dd格式,而是用strtodate('2014-10-01')) 来转换的话,程序会提示爆粗 '****-**-**'is not a valid date ...
- Delphi 设置时间格式
// 设置WINDOWS系统的短日期的格式SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, 'yyyy-MM-dd'); Applicat ...
- GMT 时间格式转换到 TDateTime (Delphi)
//GMT 时间格式转换到 TDateTime //忽略时区 function GMT2DateTime(const pSour:PAnsiChar):TDateTime; function GetM ...
- 时间操作(JavaScript版)—最简单比較两个时间格式数据的大小
呵呵呵,在软件研发过程中假设遇到要比較两个时间的大小.你会怎么做.嗯嗯嗯,非常直观的做法就是把"-"去掉,再比較大小,真的有必要吗?看以下最简单的时间比較方式: <!DOCT ...
- delphi关于文件操作集锦
关于文件操作集锦 取得该快捷方式的指向EXE关键词:快捷方式 LNK unit Unit1; interface usesWindows, Messages, SysUtils, Varian ...
随机推荐
- 公共数据访问对象接口CommDao
package org.guangsoft.dao; import java.util.List; import java.util.Set; /** * 公共DAO功能 * @param <K ...
- [Android Pro] 关于inputStream.available()方法获取文件的总大小
reference to :http://hold-on.iteye.com/blog/1017449 如果用inputStream对象的available()方法获取流中可读取的数据大小,通常我们调 ...
- android SDK 更新问题完美解决 http://dl-ssl.google.com refused
现在由于GWF,google基本和咱们说咱见了,就给现在在做Android 或者想学习Android 的朋友带来了诸多的不便,最简单的就是Android SDK Manager 你无法更新了. 现在 ...
- NYOJ题目872开会
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsoAAAKwCAIAAAAOTc6wAAAgAElEQVR4nO3dO3LcSpOG4dkEfS6Edi
- js对象的创建与原型总结
//1 新建对象 var box = new Object(); box.name = "lee"; box.age = 100; box.run = function(){ re ...
- mysql常用表/视图管理语句
查看所有表 show tables; 查看表/视图结构 desc 表名/视图名: 查看建表过程 show create table 表名: 查看建视图过程 show create view 视图名 ...
- python 连接sql server
linux 下pymssql模块的安装 所需压缩包:pymssql-2.1.0.tar.bz2freetds-patched.tar.gz 安装: tar -xvf pymssql-2.1.0.tar ...
- Delphi之DLL知识学习2---静态链接和动态链接
静态连接 静态链接是指Delphi 编译器把要调用的函数和过程编译成可执行代码.函数的代码可存留在应用程序的 .dpr文件或一单元中.当链接用户的应用程序时,这些函数与过程便成为最终的可执行文件的一部 ...
- HDU3434 Sequence Adjustment
题意:给你含有n个数的序列,每次你可以选一个子序列将上面所有的数字加1或者减1,目标是把所有数字变成相同的,问最少步数,和那个相同的数字有多少种可能. 将原序列转化为差分序列,即a[2] - a[1] ...
- C# 遍历指定目录下的所有文件及文件夹
// DirectoryInfo di = new DirectoryInfo(@"D:\Test"); // FindFile(di); static void FindFile ...