今天要显示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'; {这个会自动建立} if
not 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 |
允许别人以任何方式打开 |
|
|
请发表评论