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'; {这个会自动建立}
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

允许别人以任何方式打开

原文地址:https://www.cnblogs.com/doit8791/p/2612492.html