C++ C++;确定软件是否未在同一天打开(Windows)

C++ C++;确定软件是否未在同一天打开(Windows),c++,windows,datetime,days,C++,Windows,Datetime,Days,因此,如果软件没有在同一天打开,我需要做一些操作。我的计划是在数据库中存储从纪元到今天日期的天数。然后,当软件打开时,它将从数据库中提取自上一个历元以来的天数,然后用今天自上一个历元以来的天数进行检查。因此,我将知道这是否是同一天 我对C++非常缺乏经验,我一直在从“STDAFX.H”中查看DATETIME函数,但是我没有能够从上一个时代获得数天。 因此,我这样做的目标是,如果这是该软件今天第一次被打开,则清除一个数据库。如果今天已经打开了,那就继续,什么也不做 我不知道如何在C++中进行这件事

因此,如果软件没有在同一天打开,我需要做一些操作。我的计划是在数据库中存储从纪元到今天日期的天数。然后,当软件打开时,它将从数据库中提取自上一个历元以来的天数,然后用今天自上一个历元以来的天数进行检查。因此,我将知道这是否是同一天

<>我对C++非常缺乏经验,我一直在从“STDAFX.H”中查看DATETIME函数,但是我没有能够从上一个时代获得数天。 因此,我这样做的目标是,如果这是该软件今天第一次被打开,则清除一个数据库。如果今天已经打开了,那就继续,什么也不做

我不知道如何在C++中进行这件事。如果是python、C#或java,我不会有任何问题。那么,我如何在C++中使用这个?

< p>使用<代码> <代码>标准头,很容易得到时钟的历时数。 例如:

#include <chrono>
#include <iostream>

int main() {
    using days = std::chrono::duration<int, std::ratio<24 * 60 * 60>>;

    auto days_since_epoch = std::chrono::duration_cast<days>(std::chrono::system_clock::now().time_since_epoch());

    std::cout << days_since_epoch.count() << "\n";
}
#包括
#包括
int main(){
使用天数=标准::计时::持续时间;
自动日期(从新纪元算起)std::chrono::duration(从新纪元算起的时间)(std::chrono::system\u clock::now());
std::cout使用
标准报头,很容易获得自时钟纪元以来的天数。 例如:

#include <chrono>
#include <iostream>

int main() {
    using days = std::chrono::duration<int, std::ratio<24 * 60 * 60>>;

    auto days_since_epoch = std::chrono::duration_cast<days>(std::chrono::system_clock::now().time_since_epoch());

    std::cout << days_since_epoch.count() << "\n";
}
#包括
#包括
int main(){
使用天数=标准::计时::持续时间;
自动日期(从新纪元算起)std::chrono::duration(从新纪元算起的时间)(std::chrono::system\u clock::now());
std::cout+1 to。我只想补充一点(这不适合评论),他的回答假设UTC时区的日变化,这可能很好。这对于许多应用程序来说都是一个非常好和有效的答案,包括stackoverflow本身

但是,如果你想在当地午夜改变白天,这可以帮助你做到这一点,同时仍然保持良好的
设施。事实上,这只是一个非常小的调整:

#包括“tz.h”
#包括
#包括
int
main()
{
使用名称空间std::chrono;
使用名称空间日期;
自动tp=系统时钟::现在();
自动lp=当前_区域()->至_本地(tp);
自动天数(从新纪元算起)=持续时间(从新纪元算起的lp.time);
std::cout+1 to。我只想补充一点(这不适合评论),他的回答假设UTC时区的日变化,这可能很好。这对于许多应用程序来说都是一个非常好和有效的答案,包括stackoverflow本身

但是,如果你想在当地午夜改变白天,这可以帮助你做到这一点,同时仍然保持良好的
设施。事实上,这只是一个非常小的调整:

#包括“tz.h”
#包括
#包括
int
main()
{
使用名称空间std::chrono;
使用名称空间日期;
自动tp=系统时钟::现在();
自动lp=当前_区域()->至_本地(tp);
自动天数(从新纪元算起)=持续时间(从新纪元算起的lp.time);

std::本地时钟可能错误或故意更改以绕过此验证。那么,您是否建议更好的方法来实现此目的?您的最终目标是什么?什么是“一些操作”您想要执行的操作?这是问题中要包含的一条重要信息。如果软件今天还没有打开,我只想清除数据库。您使用的是什么数据库引擎?大多数都提供日期函数。例如,SQLIte有本地时钟可能错误或故意更改以绕过此验证。您是否建议那么,实现这一目标的更好方法是什么?你的最终目标是什么?什么是“一些行动”你想执行什么?这是问题中要包含的一条重要信息。如果软件今天还没有打开,我只想清除一个数据库。你使用的数据库引擎是什么?大多数都提供日期函数。例如,SQLIte有一个
using
子句非常棒。谢谢你的回答,但我有点难以尝试要编译这个。头文件中需要什么?这会给我带来6个错误。第一个是:在初始化之前不能使用DaysSoxCixEnCur.我试过AutoDaysSoCiEnEnCH;在头文件中,但这不起作用。当你习惯于高级语言时,C++是如此的怪异,而且不仅如此,它也很难阅读。on的一半时间读起来像一首诗。这读起来像冒号和箭头……另一个是:“天”:符号不能用在using Decellation中您使用的是什么编译器(和版本)?您可能需要-std=c++11选项(或更新的编译器:/)这个<代码>使用子句是很好的。谢谢你的回答,但是我有点难以编译。头文件中你需要什么?这给我带来了6个错误。第一个是:在初始化之前不能使用DaysSoSnCe时代。我试过自动的时代,在头文件中,但这不起作用。C++是当你习惯了更高级的语言时,你会觉得奇怪,不仅如此,它还很难读懂。Python有一半的时间读起来像一首诗。这就像是冒号和箭头……另一个是:“天”:符号不能用在using declaration中你使用的是什么编译器(和版本)?你可能需要-std=c++11选项(或更新的编译器:/)啊,这会更有用,因为这可能会在世界各地运行,因此,在远东地区,将这一天的一半时间重置是不好的。啊,这将更有用,因为这可能会在世界各地运行,因此,在远东地区,将这一天的一半时间重置是不好的。