(delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)

Object Pascal 学习笔记,Delphi 11 编程语言的完整介绍 作者: Marco Cantu 笔记:豆豆爸

2.5 日期和时间

​ 早期版本的Pascal 语言中,没有原生的日期和时间类型,但是 Object Pascal 引入了一种原生的日期和时间类型,使用浮点表示来处理日期和时间信息。更确切地说,System 单元为此定义了一个特定的 TDateTime 数据类型。

​ 这是一个浮点类型,因为它必须足够宽以在单个变量中存储年、月、日、小时、分钟和秒,精确到毫秒精度:

  • 日期用自1899-12-30以来的天数表示,存储在 TDateTime 值的整数部分中,负值表示1899年之前的日期
  • 时间以一天的分数形式存储在值的小数部分中

注解: 如果您想知道这个奇怪的日期从何而来,背后的故事相当长,与 Excel 和 Windows 应用程序中日期表示有关。当时的想法是将第 1 天视为 1900 年 1 月 1 日,这样 1899 年的除夕就是第 0 天。然而,该日期表示法的最初开发者却忘记了 1900 年不是闰年,因此后来把计算结果调整了 1 天,将 1900 年 1 月 1 日变成了第 2 天。1900 年 1 月 1 日变成了第 2 天。

​ 正如签名提到的,TDateTime 不是编译器预定义类型,但是它在 System 单元中定义如下:

typeTDateTime = type Double;

注解: System 单元在某种程度上几乎可以被视为核心语言的一部分,因为它总是自动包含在每次编译中,而不需要uses语句(实际上,将 System 单元添加到uses部分会导致编译错误)。但从技术上讲,该单元是运行时库(RTL)的核心部分,将在第 17 章中介绍。

​ 还有两种相关类型可以处理 TDateTime 结构中的时间和日期部分,分别定义为 TDate 和 TTime。这些特定类型是完整 TDateTime 类型的别名,但系统函数会对它们进行处理,修剪数据中未使用的部分。

​ 使用日期和时间数据类型非常简单,因为 Delphi 包含了许多对该类型进行操作的函数。System.SysUtils 单元中有几个核心函数,还有许多相关函数在System.DateUtils 单元中(尽管名称不同,但也包括用于操作时间的函数)。

以下是一些常用的日期/时间操作函数的简短列表:

  • Now:将当前日期和时间返回为日期/时间值。
  • Date:仅返回当前日期。
  • Time:仅返回当前时间。
  • DateTimeToStr:使用默认格式将日期和时间值转换为字符串;如果要对转换进行更多控制,请使用 FormatDateTime 函数。
  • DateToStr:将日期/时间值的日期部分转换为字符串。
  • TimeToStr:将日期/时间值的时间部分转换为字符串。
  • FormatDateTime:使用指定的格式格式化日期和时间;通过提供复杂的格式字符串,您可以指定要查看的值以及要使用的格式。
  • StrToDateTime:将包含日期和时间信息的字符串转换为日期/时间值,如果字符串格式出错,则会引发异常。如果出现错误,其配套函数 StrToDateTimeDef 会返回默认值,而不会引发异常。
  • DayOfWeek:返回与作为参数传递的日期/时间值的星期相对应的数字(使用区域设置配置)。
  • DecodeDate:从日期值中提取年、月和日的值。
  • DecodeTime:从日期值中提取小时、分钟、秒和毫秒。
  • EncodeDate:将年、月和日的值转换为日期/时间值。
  • EncodeTime:将小时、分钟、秒和毫秒值转换为日期/时间值。

​ 为了向您展示如何使用这种数据类型以及相关的一些例程,我构建了一个简单的示例,名为 TimeNow。当程序启动时,它会自动计算并显示当前的时间和日期。

varStartTime: TDateTime;
beginStartTime := Now;Show('Time is ' + TimeToStr(StartTime));Show('Date is ' + DateToStr(StartTime));
end;

​ 第一条语句是对 Now 函数的调用,它返回当前的日期和时间。此值存储在 StartTime 变量中。

注解: 与 C 风格的语言不同,当使用 Object Pascal 函数没有参数时,无需键入空括号。

​ 接下来的两条语句显示了 TDateTime 值的时间部分(转换为字符串)和相同值的日期部分。这就是程序的输出(取决于系统的区域设置配置):

Time is 6:33:14 PM
Date is 10/7/2020

​ 要编译此程序,您需要引用 System.SysUtils 单元中的函数(“system utilities” 的简称)。除了调用 TimeToStrDateToStr之外,您还可以使用更强大的 FormatDateTime 函数。

​ 请注意,时间和日期值会根据系统的国际设置转换成字符串。日期和时间格式化信息将根据操作系统和区域设置从系统中读取,并填充到 TFormatSettings 数据结构中。如果需要自定义格式,可以创建该类型的自定义结构,并将其作为参数传递给大多数日期时间格式化函数。

注解: TimeNow 项目还有第二个按钮,可以用来启用定时器(Timer)。计时器是一个组件,会自动执行事件处理程序(按照您指定间隔)。如果启用定时器,就会看到当前时间的每1秒都会添加到列表中。更有用的用户界面是每秒更新一个标签,显示当前时间,基本上就是建立了一个时钟。

2.5.1 日期时间辅助

​ 为了更方便地操作 TDateTime 数据类型,Delphi 11 引入了一个特定的类型辅助,类似于我们在本章前面已经看到的本地数据类型。TDateTime 的记录助手名为 TDateTimeHelper,定义在 System.DateUtils 单元中。可用的操作包括获取月份或年份的第一天,或转换为 Unix 日期格式,检查上午/下午,查找是否是闰年等等。记录辅助有150多个方法,在此不一一列举。

TDateTime 助手类型还引入了一个新的 NowUTC 操作(UTC 时区中的当前时间),经典 RTL 中没有这个操作。以下是一个示例代码片段,还显示了两个辅助调用的串联,TomorrowToString

usesDateUtils;procedure TForm1.Button1Click(Sender: TObject);
beginvar MyDate: TDateTime := TDateTime.NowUTC;MyDate.Tomorrow.ToString;
end;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/243354.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++11手撕线程池 call_once 单例模式 Singleton / condition_variable 与其使用场景

一、call_once 单例模式 Singleton 大家可以先看这篇文章&#xff1a;https://zh.cppreference.com/w/cpp/thread/call_once /*std::call_oncevoid call_once( std::once_flag& flag, Callable&& f, Args&&... args ); */ #include <iostream> #i…

C# 使用System.Threading.Timer 实现计时器

写在前面 以往一般都是用 System.Timers.Timer 来做计时器&#xff0c;而 System.Threading.Timer 也可以实现计时器功能&#xff0c;并且还可以配置首次执行间隔&#xff0c;在功能上比System.Timers.Timer更加丰富&#xff1b;根据这个特性就可以实现按指定时间间隔对委托进…

2023年上半年网络工程师真题(1/3)

1.固态硬盘的存储介质是&#xff08;B&#xff09;。 A.光盘 B.闪存 C.软盘 D.磁盘 SSD存储介质是FLASH(一块块的存储芯片)&#xff0c;HDD(机械硬盘)存储介质是磁盘(机械臂和盘道)&#xff0c;补充:U盘的存储介质也是FLASH闪存。 2.虚拟存储技术把&#xff08;A&#xf…

小封装高稳定性振荡器 Sg2520egn / sg2520vgn, sg2520ehn / sg2520vhn

描述 随着物联网和ADAS等5G应用的实施&#xff0c;数据流量不断增长&#xff0c;网络基础设施变得比以往任何时候都更加重要。IT供应商一直在快速建设数据中心&#xff0c;并且对安装在数据中心内部/内部的光模块有很大的需求。此应用需要具有“小”&#xff0c;“低抖动”和“…

Linux_清理docker磁盘占用

文章目录 前言一、docker system 命令1. docker system df&#xff08;本文重点使用&#xff09;2. docker system prune&#xff08;本文重点使用&#xff09;3. docker system info4. docker system events 二、开始清理三、单独清理Build Cache四、单独清理未被使用的网络 前…

特征融合篇 | YOLOv8 引入长颈特征融合网络 Giraffe FPN

在本报告中,我们介绍了一种名为DAMO-YOLO的快速而准确的目标检测方法,其性能优于现有的YOLO系列。DAMO-YOLO是在YOLO的基础上通过引入一些新技术而扩展的,这些技术包括神经架构搜索(NAS)、高效的重参数化广义FPN(RepGFPN)、带有AlignedOTA标签分配的轻量级头部以及蒸馏增…

一文详解 Berachain 测试网:全面介绍与教程,bitget wallet教程

什么是Berachain&#xff1f; Berachain&#xff08;web3.bitget.com/zh-CN/assets/berachain-wallet&#xff09;是一种尖端区块链技术&#xff0c;使用 Cosmos SDK 构建的 Layer-1&#xff0c;兼容以太坊虚拟机&#xff08;EVM&#xff09;。它基于一种独特的概念&#xff0c…

Unity编程#region..#endregion以及面板提示语标签[Tooltip(““)]

C#中的#region..#endregion 在Unity中&#xff0c;#region和#endregion是用于代码折叠的预处理指令。它们并不是Unity特有的&#xff0c;而是C#语言本身提供的功能。 #region用于标记一段代码的开始&#xff0c;而#endregion用于标记一段代码的结束。在编辑器中&#xff0c;可…

基于YOLOv5、v7、v8的竹签计数系统的设计与实现

文章目录 前言效果演示一、实现思路① 算法原理② 程序流程图 二、系统设计与实现三、模型评估与优化① Yolov5② Yolov7③Yolov8 四、模型对比 前言 该系统是一个综合型的应用&#xff0c;基于PyTorch框架的YOLOv5、YOLOv7和YOLOv8&#xff0c;结合了Django后端和Vue3前端&am…

C内存对齐问题

一、主要参考&#xff1a; C/C编程笔记&#xff1a;C语言对齐问题【结构体、栈内存以及位域对齐】_二进制异常退出,栈对齐-CSDN博客 其中关于内存对齐&#xff0c;讲了结构体以及位域&#xff0c;以及一些容易出错的地方&#xff0c;非常好。 结构体对齐&#xff1a; 下面提…

项目风险管理

风险分类&#xff1a; 分类性质&#xff1a;纯粹风险&#xff0c;投机风险---对应火灾&#xff0c;股票买卖 产生原因&#xff1a;自然&#xff0c;社会&#xff0c;政治&#xff0c;经济&#xff0c;技术 风险性质&#xff1a;客观性&#xff0c;偶然性&#xff0c;相对性&a…

MySQL---多表等级查询综合练习

创建emp表 CREATE TABLE emp( empno INT(4) NOT NULL COMMENT 员工编号, ename VARCHAR(10) COMMENT 员工名字, job VARCHAR(10) COMMENT 职位, mgr INT(4) COMMENT 上司, hiredate DATE COMMENT 入职时间, sal INT(7) COMMENT 基本工资, comm INT(7) COMMENT 补贴, deptno INT…

锂电池SOC估计 | PatchTST时间序列模型锂电池SOC估计

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池SOC估计 | PatchTST时间序列模型锂电池SOC估计 采用新型PatchTST时间序列模型预测锂电池SOC&#xff0c;送锂电池数据集 可替换数据集&#xff0c;实现负荷预测、流量预测、降雨量预测、空气质量预测等其他多种…

[足式机器人]Part2 Dr. CAN学习笔记- 最优控制Optimal Control Ch07-2 动态规划 Dynamic Programming

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记 - 最优控制Optimal Control Ch07-2 动态规划 Dynamic Programming 1. 基本概念2. 代码详解3. 简单一维案例 1. 基本概念 Richoard Bell man 最优化理论&#xff1a; An optimal policy has the …

Spring-配置文件

一、引子 了解完Spring的基本概念后&#xff0c;我们紧接着来了解Spring中的核心文件--Spring配置文件。 二、配置Bean 我们在上一节Spring的基本概念中快速使用了一下Spring&#xff0c;其中我们在配置文件中主要涉及到就是Bean标签的配置&#xff1a;主要的配置字段有id, …

【漏洞攻击之文件上传条件竞争】

漏洞攻击之文件上传条件竞争 wzsc_文件上传漏洞现象与分析思路编写攻击脚本和重放措施中国蚁剑拿flag wzsc_文件上传 漏洞现象与分析 只有一个upload前端标签元素&#xff0c;并且上传任意文件都会跳转到upload.php页面&#xff0c;判定是一个apache容器&#xff0c;开始扫描…

Windows 下ffmpeg安装及实践

Windows 下ffmpeg安装及实践 背景安装实践其他 背景 最近负责音频文件处理相关的业务&#xff0c;涉及到 ffmpeg 对一些音频文件格式的校验&#xff0c;记录一下安装过程及踩坑过程。 安装 如图1所示&#xff0c;进入官网&#xff0c;在windows下任选一个文件&#xff1a;h…

【笔记】Blender4.0建模入门-3物体的基本操作

Blender入门 ——邵发 3.1 物体的移动 演示&#xff1a; 1、选中一个物体 2、选中移动工具 3、移动 - 沿坐标轴移动 - 在坐标平面内移动 - 自由移动&#xff08;不好控制&#xff09; 选中物体&#xff1a;右上的大纲窗口&#xff0c;点击物体名称&#xff0c;物体的轮…

大模型笔记【3】 gem5 运行模型框架LLama

一 LLama.cpp LLama.cpp 支持x86&#xff0c;arm&#xff0c;gpu的编译。 1. github 下载llama.cpp https://github.com/ggerganov/llama.cpp.git 2. gem5支持arm架构比较好&#xff0c;所以我们使用编译LLama.cpp。 以下是我对Makefile的修改 开始编译&#xff1a; make UNAME…

利用 ChatGPT 高效搜索:举一反三的思考方式,高效查找解决方案

文章目录 基础思路举一反三全面了解 GO 的 Web 框架系统方案建议 - 让 ChatGPT 推断我的一些微末思考结论 本文只是我的一些尝试&#xff0c;基于 ChatGPT 实现系统化快速搜索某编程语言的特定领域相关包或者基于其他语言类推荐落地方案的尝试。 这篇文章中描述的方式不一定是…