根据用户的时区创建一个告诉当前时间的程序(C ++)

时间:2012-09-08 16:37:25

标签: c++ timezone

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

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

例如:

  

请输入时区:      东部时间
  您所在的时区是GMT -5:00
  您当前的时间是下午12:19
  你想尝试另一种吗?(是/否)

沿着这些方向的东西。最终我希望能够利用这些知识并将其应用于创建一些基本的免费投掷应用程序,你搞砸了,看起来不错。最后,我希望能够在开始开发视频游戏或其他软件时应用此功能(当然还有许多其他重要功能)

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

我调查了cplusplus库中的各种功能,并且我遇到了一些功能

“本地时间” “gmtime的” 和“时间”(获取当前时间等)

但我想知道这些功能是如何制作的,过程和他们使用的公式。我怎么会考虑创造类似的东西。

我甚至抬头查看时区是如何计算的,我得到“每条经度线有15度差异,每15度不同1小时” - 维基解答。

这只是我已经思考了几天的事情。

所以我计划使用C ++和主要基于Windows的机器(不确定它是否有OSX或Unix / Linux或Windows)

非常感谢所有帮助,

谢谢!

Umeed

1 个答案:

答案 0 :(得分:2)

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

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

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

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

修改

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