delphi日期格式显示及文件打开方式小结

今天要显示delphi日期格式为"xxxx年xx月xx日"形式,原本以为格式化串就是这样写的,后来发现不行,搜索后才知是按格式"dddddd"。

参考:在Delphi中可用FormatDateTime函数的用法

function FormatDateTime(const Format: string; DateTime: TDateTime): string;

Format参数是一个格式化字符串。DateTime是时间类型。返回值是一种格式化后的字符串,重点来看Format参数中的指令字符

c以短时间格式显示时间,即全部是数字的表示

FormatdateTime('c',now);

输出为:2004-8-7 9:55:40

d 对应于时间中的日期,日期是一位则显示一位,两位则显示两位

FormatdateTime('d',now);

输出可能为1~31

dd 和d的意义一样,但它始终是以两位来显示的

FormatdateTime('dd',now);

输出可能为01~31

ddd 显示的是星期几

FormatdateTime('ddd',now);

输出为: 星期六

dddd 和ddd显示的是一样的。

但上面两个如果在其他国家可能不一样。

ddddd 以短时间格式显示年月日

FormatdateTime('ddddd',now);

输出为:2004-8-7

dddddd 以长时间格式显示年月日

FormatdateTime('dddddd',now);

输出为:2004年8月7日

e/ee/eee/eeee 以相应的位数显示年

FormatdateTime('ee',now);

输出为:04 (表示04年)

m/mm/mmm/mmmm 表示月

FormatdateTime('m',now);

输出为:8FormatdateTime('mm',now);

输出为 08

FormatdateTime('mmm',now);

输出为 八月

FormatdateTime('mmmm',now);

输出为 八月

和ddd/dddd 一样,在其他国家可能不同

yy/yyyy 表示年

FormatdateTime('yy',now);

输出为 04

FormatdateTime('yyyy',now);

输出为 2004

h/hh,n/nn,s/ss,z/zzz 分别表示小时,分,秒,毫秒

t 以短时间格式显示时间

FormatdateTime('t',now);

输出为 10:17

tt 以长时间格式显示时间

FormatdateTime('tt',now);

输出为10:18:46

ampm 以长时间格式显示上午还是下午

FormatdateTime('ttampm',now);

输出为:10:22:57上午

如果要在Format中加普通的字符串,可以用双引号隔开那些特定义的字符,这样普通字符串中如果含特殊的字符就不会被显示为时间格式啦:

FormatdateTime('"today is" c',now);

输出为:today is 2004-8-7 10:26:58

时间中也可以加"-"或"\"来分开日期:

FormatdateTime('"today is" yy-mm-dd',now);

FormatdateTime('"today is" yy\mm\dd',now);

输出为: today is 04-08-07

也可以用":"来分开时间

FormatdateTime('"today is" hh:nn:ss',now);

输出为:today is 10:32:23

今天真正弄明白一个问题,TfileStream如何共享打开一个文件,FileStream := TFileStream.Create(FileName, fmShareDenyNone);即可,不怕要以读为目的打开的文件已被占用的情况。

delphi 用 TFileStream(文件流) 读写:TStream 是一个抽象的基类, 不能直接生成对象. 在具体的应用中, 主要使用它的子孙类:

TFileStream: 文件流

TStringStream: 字符串流

TMemoryStream: 内存流

TResourceStream: 资源文件流

THandleStream: 是 TFileStream 的父类、TStream 的子类

TCustomMemoryStream: 是 TMemoryStream 和 TResourceStream 的父类、TStream 的子类

与流相关的常用类还有: TReader、TWriter、TCompressionStream、TDecompressionStream

procedure TForm1.Button1Click(Sender: TObject);

var

getStream,setStream: TFileStream; {声明一个文件流}

getPath,setPath: string;

begin

getPath := 'c:\temp\get.jpg'; {需要这个文件存在}

setPath := 'c:\temp\set.jpg'; {这个会自动建立}

ifnot FileExists(getPath) then

begin

ShowMessage('找不到我们要测试的图片文件: ' + getPath);

Exit;

end;

getStream := TFileStream.Create(getPath, fmOpenRead or fmShareExclusive);

setStream := TFileStream.Create(setPath, fmCreate);

{建立文件流需要两个参数: 参数 1 是路径, 参数 2 是打开模式}

getStream.Position := 0; {流指针移到开始, 复制时从这里开始}

setStream.CopyFrom(getStream, getStream.Size); {Copy 流}

{CopyFrom 的参数 2 是要复制的内容大小; 如果为 0 , 不管指针在什么位置都会复制所有内容}

{CopyFrom 返回实际拷贝的字节数}

{这时硬盘上就有 set.jpg 文件, 与 get.jpg 一么一样}

{其实就是复制文件, 不过这里我们是用文件流实现的}

getStream.Free;

setStream.Free;

end;

TFileStream 打开模式与共享模式:

分类

参数

说明

fmCreate

建立文件, 如果存在则打开它。

fmOpenRead

只读打开

fmOpenWrite

只写打开

fmOpenReadWrite

读写打开

fmShareCompat

共享模式, 兼容 Dos

fmShareExclusive

不允许别人以任何方式打开

fmShareDenyWrite

允许别人以只写方式打开

fmShareDenyRead

允许别人以只读方式打开

fmShareDenyNone

允许别人以任何方式打开