1

我想开始自己创建程序,但是我的 c/c++ 技能仍然非常基础。

我真的很想创建一个根据您输入的时区告诉您时间的程序

例如:

请输入时区:东部时间
您的时区是格林威治标准时间 -5:00
您当前的时间是下午 12:19
您想试试其他时间吗?(y/n)

类似的东西。最终,我希望能够使用这些知识并将其应用到创建一些基本的免费应用程序,这些应用程序你会乱用并且看起来不错。最终,当我开始开发视频游戏或其他软件时,我希望能够将此(当然还有许多其他重要功能)应用到,

在这种情况下保存文件,他们最有可能通过它使用的机器应用时间戳,但它如何访问它?

我查看了 cplusplus 库中的各种函数,我遇到了一些函数

"localtime" "gmtime" 和 "time" (用于获取当前时间等)

但我想知道这些函数是如何产生的,过程,它们使用的公式。我什至如何去思考创造这样的东西。

我什至查看了时区是如何计算的,我得到了“每条经度线有 15 度的差异,每 15 度有 1 小时的差异” - Wiki Answers。

这只是我这几天的一些思考。

所以我计划使用 C++ 和主要基于 Windows 的机器来做到这一点(不确定它是否会有所不同,无论是 OSX 还是 Unix/Linux 或 Windows)

非常感谢所有帮助,

谢谢!

梅德

4

1 回答 1

2

您将需要查看这些功能的官方文档。在我强烈推荐用于开发的 UNIX 环境(例如 Windows 上的 Cygwin)中,您可以通过man系统获取任何 C 标准函数的文档,例如通过键入man 3 timeman gmtime. 在 Windows 上,至少据我所知,没有这样的文档系统,您只需搜索该函数的文档即可。

time()方法在头文件中定义<ctime>(或者,对于纯 C,<time.h>)。它将返回自 以来经过的秒数1970-01-01 00:00 UTC (GMT +0)。这也称为 UNIX 时间。根据该值计算实际日期(年、月、日、小时、分钟、秒)是一项非常简单的任务(您只需要考虑闰年等)。如果您想知道不同时区的时间,例如GMT +1,只需添加.3600 * <your timezone offset here>返回的值即可time()

该方法time()在您的 C 标准库中内部实现,或直接作为操作系统内核中的系统调用,它反过来从主板的实时时钟计算时间,该时钟由 CMOS 电池供电以跟踪时间即使您的 PC 已关闭并与电源断开连接。

您还需要确保始终使用标准 C 方法,而不是仅限 Windows 的方法,以确保代码的可移植性。

编辑

C++11标准主要由最新版本的gcc和 Microsoft 编译器支持,还提供了一种新的标准获取时间方式:std::chrono. std::chrono支持微秒精度,而不是time().

于 2012-09-08T17:03:08.653 回答