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 打开模式与共享模式:
|