zoukankan      html  css  js  c++  java
  • 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

    允许别人以任何方式打开

  • 相关阅读:
    leetcode1046
    leetcode1041
    leetcode1042
    leetcode399
    【经验分享】数据科学与机器学习面试指南
    计算机视觉计算任务有哪些,怎么分类 ?
    超详细!上线一个机器学习项目你需要哪些准备?
    人工智能和机器学习的前世今生
    机器学习从业人员到底做什么?
    两年AI研究经验(教训)总结,进来看看吧!
  • 原文地址:https://www.cnblogs.com/doit8791/p/2612492.html
Copyright © 2011-2022 走看看