问题标签 [tdatetime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
85 浏览

c++builder - 为什么 TDateTime 计算涉及变体?

下面的简单示例代码,带有生成的汇编程序。我很惊讶生成的代码涉及变体。Delphi 等价物当然不会。

生成的代码。

0 投票
1 回答
895 浏览

delphi - 将美国 TDateTime 值转换为以欧洲格式正确显示

是否有任何简单的选项可以将美国TDateTimeApr 17, 2014 8:35:38 PM PDT转换为类似于2014-04-17 20:35:38的欧洲格式?

编辑:

我有一个包含美国格式的原始日期/时间的字符串:

我想以某种方式将此字符串读取/解析为TDateTime类型的变量- 或者只是将其转换为所需格式的另一个字符串:

(德尔福 XE4)

0 投票
1 回答
472 浏览

delphi - 尝试使用 Lazarus 和 Freepascal 创建数据传输率计算器

我正在尝试向我的应用程序界面添加“传输速率:XGb p\min”功能。我正在使用 Lazarus 1.2.2 和 Freepascal 2.6.4 以毫秒级计算它。

我有一个从磁盘读取 64Kb 块的循环,对每个 64Kb 块进行处理,并重复直到读取整个磁盘或直到用户单击中止按钮。我正在尝试计算每次读取 64Kb 需要多长时间,然后计算每分钟读取数据的平均速率,即“每分钟 3Gb”。

我有一个名为“GetTimeInMilliseconds”的自定义函数,它计算标准时间到毫秒。

此外,为了避免界面在部分毫秒内被刷新,我有一个计数器试图确保界面仅在循环中每 50 次刷新一次,即当 64Kb 块被读取 50 次时,计数器重置为 0。

问题是,传输显示要么没有填充,要么填充了不准确的数字,例如 RAID0 设备的“234Mb p\min”!在其他时候,它会得到更真实的东西,比如“3.4Gb p\min”。如果在同一台 PC 和同一磁盘上重复运行,它应该始终准确,而不是不一致不准确。

这是我的 Try...finally 循环,它执行循环。它也称为 FormatByteSize,这是一个自定义函数,可以计算整数大小并将其转换为 XMb、XGb、XTb 等。

例子:

Form1.Caption := IntToStr(GetTimeInMilliSeconds(Time));

0 投票
1 回答
1103 浏览

delphi - 将 TValue 转换为 TDateTime

如何在 TDateTime 中转换 TValue?

我看到有 AsInteger、AsDouble 等方法,但 TDateTime 没有。

0 投票
2 回答
883 浏览

delphi - What is the best way of detecting that a Delphi TWebBrowser web page has changed since I last displayed it?

I want to display a 'news' page in a form using Deplhi TWebBrowser. The news page is a simple HTML page which we upload to our website from time to time and may be output from various tools. The display is fine but I'd like to know in my app whether it has changed since I last displayed it, so ideally I'd like to get either its modified date/time or its size / checksum. Precision is not important and ideally should not rely on properties that might fail because 'simple' tools were used to edit the HTML file such as NotePad. Checking on the web there are several document modified java calls but I really dont know where to start with those. I've looked through the numerous calls in Delphi's Winapi.WinInet unit and I see I can fetch the file with HTTP to examine it but that seems like cracking a walnut with a sledgehammer. I also cannot see any file date time functionality which makes me think I'm missing something obvious. I'm using Delphi XE5. In which direction should I be looking please? Thanks for any pointers.

0 投票
3 回答
1211 浏览

mysql - 忽略 TDateTime 中的毫秒数(减去的相同 TDateTime 值不为 0)

简而言之我的问题:TDateTime A(03.09.2014 13:40)- TDateTime B(03.09.2014 13:40)= -1

我有两个要比较的 TDateTime 值,首先我使用=运算符检查它们是否相同,但经过几次测试后,我意识到这在我的情况下不起作用。令人困惑的是,它在大多数时候都能很好地工作,但有时却不行。

LastWriteTime从现有文件的属性中获取一个值,另一个值来自 MySQL 数据库。

这是一些代码:

现在正如之前提到的,这个简单的代码大部分时间都在工作,但是对于某些TDateTime值,我得到一个否定的结果,这应该意味着我TDateTime来自 MySQL 数据库的值比我的本地文件TDateTime值更早。

于是我开始调试:

这为我提供了自 30.12.1899 以来经过的天数以及时间的十进制值。

示例值:

不同的小数是否应该是毫秒(从 xxxx,4875 开始)?现在,如果我比较它们(例如CompareDateTime(a,b)a = b),我不会得到0/ true(我比较aTicksbTicks值)。

我是否必须以获取本地文件的方式进行更改TDateTime(目前我正在使用 WinAPI,GetLastWriteTimeUTC没有为我提供正确的 UTC 时间)?

我认为这不是一个真正的难题,但我不知道如何解决这个问题。``是否TDateTime存储隐藏的毫秒?在调试模式下,我看不到任何毫秒,我不知道如何从我的TDateTime(使用 Delphi XE2)中获取这个值。

以下是关于我的项目的一些额外细节

我以TDateTime b这种方式获得价值

如果来自 MySQL 数据库的文件“较新”,我将替换它并以这种方式设置LastWriteTime来自我的 MySQLTDateTime a属性:(SetLastWriteTimeUTC(a)并且我TDateTime来自 MySQL (a) 的值没有任何毫秒值)。所以问题不应该再次发生,但它确实发生了。

TDateTime我的 MySQL 数据库上的值来自这个

我希望这是足够的信息,而不是太多

此致,

尼古拉斯

更新:

该代码与我的主程序“相同”,正如我上面所说,错误的 DateTime 比较不会一直只在某些文件上触发(在我的情况下是 $Default10.dsk)。

0 投票
2 回答
14830 浏览

delphi - Delphi 如何将 TDateTime 计算为浮点值?

我是Delphi编程新手。在浏览Data TypesDelphi我发现TDateTime.

在我的测试应用程序中使用它时,我知道TDateTimeObject 为我提供了一个Float\Double值。

TDateTime对它如何计算Date TimetoDouble值有点好奇。

以下是我使用的示例代码:

它是否使用任何公式Date and Time Value从 Windows 计算?

任何人都可以建议/向我提供有关工作的更多信息TDateTime吗?

提前致谢。

0 投票
1 回答
2022 浏览

delphi - 在 Delphi FireMonkey XE7 中将字符串转换为日期时间时出错

在移动设备中将字符串转换为 FireMonkey 中的 TDateTime 时遇到问题。

它总是给我错误,不知道该怎么做。

我向您展示我的工作:

例外是:

'31-03-2015 9:36:00' 不是有效的日期和时间。

0 投票
1 回答
992 浏览

java - Delphi tdatetime 到 Java 日期/日历

我有一个问题要问你德尔福破解那里。

我的 Java 应用程序正在与 Delphi 应用程序通信。Delphi 应用程序在其 UI 中显示一些日期值,这些日期值应通过文件传输到 Java 应用程序中。

但不是 UTC 或任何时间字符串,delphi 应用程序导出一些浮点数,我希望它们只是日期的内部 tdatetime 值。

下面使用 MM/dd/YYYY 格式说明了这一点:

  • 用户界面:10/07/2014 -> 出口:41919,00
  • 用户界面:05/31/2017 -> 出口:42887,00
  • 用户界面:09/30/2015 -> 出口:42277,00
  • 用户界面:08/31/2016 -> 出口:42613,00

我知道,Delphi tdatetime 值使用 30/12/1899 作为参考。

因此,我希望以下代码片段可以解决问题:

然而令我惊讶的是,这是不正确的

  • 导出:41919,00 -> Java:10/07/14 00:00(正确)
  • 导出:42887,00 -> Java:06/01/17 00:00(失败,+1 天)
  • 导出:42277,00 -> Java:09/30/15 00:00(正确)
  • 导出:42613,00 -> Java:08/31/16 00:00(正确)

那么我的代码片段和转换有什么问题?

实际上我没有应用程序本身,只有 UI 的屏幕截图和导出的文件。因此,屏幕截图和导出本身可能并不完全正确。

这也可以解释为什么

  • 用户界面:05/31/2017 -> 42887,00 有时是 42886,00

还有其他解释吗?我认为这可能与 Java 和 Delphi 中对闰年的不同处理有关,但我无法弄清楚这一点。

使用 Date 并改为执行一些 ms-additions 时会出现同样的问题。转换后的日期并不总是与 UI 中的预期值匹配。

任何人都使用与上述类似的片段将delphi tdatetime转换为java并且没有遇到任何故障?

0 投票
3 回答
8948 浏览

delphi - Delphi中减去两个TDATETIME变量,分钟返回结果

我有两个TDateTime变量,如下所示:

我需要找出它们之间的区别,在hh:mm:ss格式上。

这些...Between()功能在这里没有帮助我。