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

这篇具有很好参考价值的文章主要介绍了(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 单元中定义如下:

type
  TDateTime = 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。当程序启动时,它会自动计算并显示当前的时间和日期。

var
  StartTime: TDateTime;
begin
  StartTime := 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文章来源地址https://www.toymoban.com/news/detail-816854.html

uses
  DateUtils;

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

到了这里,关于(delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络原原理学习资料分享笔记---第一章/第六节(为有梦想的自己加油!)

    第六节 计算机网络与 因特网发展简史 第六节 计算机网络与因特网发展简史 知识点 1 计算机网络与因特网发展简史 第六节 计算机网络与因特网发展简史 3 、 1972 年底, ARPAnet已经发展到 15 个交换结点。 4 、 20 世纪 70 年代早期与中期,除了ARPAnet之外,还诞生了许多其他分

    2024年04月27日
    浏览(47)
  • 计算机网络原原理学习资料分享笔记---第二章/第七节/第八节(为有梦想的自己加油!)

    第七节 P 2 P应用 第七节 P 2 P应用 知识点 1 P 2 P 第七节 P 2 P应用 知识点 1 P 2 P 第八节 Socket编程基础 第八节 Socket编程基础 第八节 Socket编程基础 第八节 Socket编程基础 知识点 1 Socket基本概念 第八节 Socket编程基础 第八节 Socket编程基础 4 、TCP提供面向连接,可靠的字节流传输服

    2024年04月27日
    浏览(48)
  • 0.flink学习资料

    (1)google dataflow model 下载链接:p1792-Akidau.pdf (vldb.org) Akidau T, Bradshaw R, Chambers C, et al. The dataflow model: a practical approach to balancing correctness, latency, and cost in massive-scale, unbounded, out-of-order data processing[J]. Proceedings of the VLDB Endowment, 2015, 8(12): 1792-1803 流式计算的基石文档,google出品

    2024年02月12日
    浏览(52)
  • zkrollup学习资料汇总

    FluiDex FluiDex Labs 致力于构建下一代专业的去中心化交易所。我们将在以太坊上使用 PLONK 零知识证明技术,开发高性能的订单簿数字资产现货交易所。 zksync: 最完整的 ZK-Rollup 开源项目代码,涵盖了一个 ZK-Rollup 系统需要的每个组件。使用 PLONK 机制,电路代码使用 bellman,链下

    2024年02月12日
    浏览(49)
  • 【IOT】学习资料

    随着科技的不断发展,物联网(IoT)已经成为了当今数字化时代的一部分。物联网将各种物理设备、传感器和互联网连接起来,为我们提供了巨大的数据流和智能化的应用。在这个庞大的生态系统中,物联网平台扮演着至关重要的角色,它们不仅可以连接和管理物联网设备,

    2024年02月20日
    浏览(53)
  • 以太坊入门学习资料

    区块链按照访问和管理权限分为公有链、联盟链和私有链。 公有链:完全开放,所有节点均可加入,代表链-比特币Bitcoin、以太坊Ethereum。 联盟链:有多个组织和机构共同管理,获得组织和机构许可的节点可以加入,代表链-超级账本Hyperledger Fabric。 私有链:获得集中管理者

    2024年02月02日
    浏览(58)
  • 自动驾驶最强学习资料

    资料说明和获取方式 本资料包是作者吐血整理的干货!目前为止应该是非常全的自动驾驶资料包!是作者五年自动驾驶算法工程师的 积累! 以上干货资料并不全是作者自己原创, 是作者作为五年自动驾驶算法工程的积累,一部分是参考其他的资料,一部分是作者自己的一些

    2024年03月13日
    浏览(84)
  • 机器学习 深度学习资料 资源machine learning

    Kaggle入门,看这一篇就够了 - 知乎 (zhihu.com) https://zhuanlan.zhihu.com/p/25686876 day1-1.什么是机器学习_哔哩哔哩_bilibili day1-1.什么是机器学习是10天学会机器学习从入门到深度学习的第1集视频,该合集共计62集,视频收藏或关注UP主,及时了解更多相关视频内容。 https://www.bilibili.com

    2024年02月21日
    浏览(54)
  • linux存储技术学习资料

    https://www.cnblogs.com/pengdonglin137/p/16525428.html Linux内核的I/O栈大图 知乎Linux I/O专栏1 Linux 块设备之Block Layer层架构演变 Linux VFS机制简析(一) Linux VFS机制简析(二) Linux Kernel文件系统写I/O流程代码分析(一) Linux Kernel文件系统写I/O流程代码分析(二)bdi_writeback linux问题调查工具

    2024年02月06日
    浏览(73)
  • 小程序的学习资料收集

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=1476434677599 3:设计指南:https://mp.weixin.qq.com/debug/wxadoc/design/index.html 4:设计资源下载:https://mp.weixin.qq.com/debug/wxadoc/design/#资源下载 5:微信小程序公测接入指南:http://

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包