Datetime C asp.net core 2.2-获取当前日期时间-不准确

Datetime C asp.net core 2.2-获取当前日期时间-不准确,datetime,.net-core,utc,datetimeoffset,Datetime,.net Core,Utc,Datetimeoffset,我尝试了所有方法来获取当前的年/月/日期/小时,但都不起作用。我总是落后一个小时得到数据。所以如果荷兰是17:00,我就得到16:00。我试过很多东西,但都没能把它修好。。是虫子吗 我试过这个: string dateTimeNowPlusForecaseHour = DateTimeOffset.Now.ToLocalTime().AddHours(hour).ToString("yyyyMMddhh"); 这是: string dateTimeNowPlusForecaseHour =

我尝试了所有方法来获取当前的年/月/日期/小时,但都不起作用。我总是落后一个小时得到数据。所以如果荷兰是17:00,我就得到16:00。我试过很多东西,但都没能把它修好。。是虫子吗

我试过这个:

string dateTimeNowPlusForecaseHour = DateTimeOffset.Now.ToLocalTime().AddHours(hour).ToString("yyyyMMddhh"); 
这是:

string dateTimeNowPlusForecaseHour = DateTimeOffset.UtcNow.ToLocalTime().AddHours(hour).ToString("yyyyMMddhh");
string dateTimeNowPlusForecaseHour = DateTimeOffset.UtcNow.ToLocalTime().AddHours(hour).ToString("yyyyMMddhh");
string dateTimeNowPlusForecaseHour = DateTimeOffset.Now.AddHours(hour).ToString("yyyyMMddhh"); 
        public string GetForecastTime(int hour)
    {
        // Take amount of seconds elapsed since 1970
        var amountOfSecondsElapsedSince1970 = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();

        // Make a Datetime variable (1970 is the start)
        System.DateTime dateTimeNowString = new DateTime(1970, 1, 1, 1, 0, 0, 0, System.DateTimeKind.Utc);

        // Add amountOfSecondsElapsedSince1970 to the date time starting at 1970, + the amount of hours (for each forecast so 0, 1, and 2)
        dateTimeNowString = dateTimeNowString.AddSeconds(amountOfSecondsElapsedSince1970).AddHours(hour).ToLocalTime();

        // This is the dateTime
        string dateRealWeatherForecastTimee = dateTimeNowString.ToString("yyyyMMddhh");

        return dateRealWeatherForecastTimee;
    }
这是:

string dateTimeNowPlusForecaseHour = DateTimeOffset.UtcNow.ToLocalTime().AddHours(hour).ToString("yyyyMMddhh");
string dateTimeNowPlusForecaseHour = DateTimeOffset.UtcNow.ToLocalTime().AddHours(hour).ToString("yyyyMMddhh");
string dateTimeNowPlusForecaseHour = DateTimeOffset.Now.AddHours(hour).ToString("yyyyMMddhh"); 
        public string GetForecastTime(int hour)
    {
        // Take amount of seconds elapsed since 1970
        var amountOfSecondsElapsedSince1970 = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();

        // Make a Datetime variable (1970 is the start)
        System.DateTime dateTimeNowString = new DateTime(1970, 1, 1, 1, 0, 0, 0, System.DateTimeKind.Utc);

        // Add amountOfSecondsElapsedSince1970 to the date time starting at 1970, + the amount of hours (for each forecast so 0, 1, and 2)
        dateTimeNowString = dateTimeNowString.AddSeconds(amountOfSecondsElapsedSince1970).AddHours(hour).ToLocalTime();

        // This is the dateTime
        string dateRealWeatherForecastTimee = dateTimeNowString.ToString("yyyyMMddhh");

        return dateRealWeatherForecastTimee;
    }
这是:

string dateTimeNowPlusForecaseHour = DateTimeOffset.UtcNow.ToLocalTime().AddHours(hour).ToString("yyyyMMddhh");
string dateTimeNowPlusForecaseHour = DateTimeOffset.UtcNow.ToLocalTime().AddHours(hour).ToString("yyyyMMddhh");
string dateTimeNowPlusForecaseHour = DateTimeOffset.Now.AddHours(hour).ToString("yyyyMMddhh"); 
        public string GetForecastTime(int hour)
    {
        // Take amount of seconds elapsed since 1970
        var amountOfSecondsElapsedSince1970 = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();

        // Make a Datetime variable (1970 is the start)
        System.DateTime dateTimeNowString = new DateTime(1970, 1, 1, 1, 0, 0, 0, System.DateTimeKind.Utc);

        // Add amountOfSecondsElapsedSince1970 to the date time starting at 1970, + the amount of hours (for each forecast so 0, 1, and 2)
        dateTimeNowString = dateTimeNowString.AddSeconds(amountOfSecondsElapsedSince1970).AddHours(hour).ToLocalTime();

        // This is the dateTime
        string dateRealWeatherForecastTimee = dateTimeNowString.ToString("yyyyMMddhh");

        return dateRealWeatherForecastTimee;
    }
这是:

string dateTimeNowPlusForecaseHour = DateTimeOffset.UtcNow.ToLocalTime().AddHours(hour).ToString("yyyyMMddhh");
string dateTimeNowPlusForecaseHour = DateTimeOffset.UtcNow.ToLocalTime().AddHours(hour).ToString("yyyyMMddhh");
string dateTimeNowPlusForecaseHour = DateTimeOffset.Now.AddHours(hour).ToString("yyyyMMddhh"); 
        public string GetForecastTime(int hour)
    {
        // Take amount of seconds elapsed since 1970
        var amountOfSecondsElapsedSince1970 = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();

        // Make a Datetime variable (1970 is the start)
        System.DateTime dateTimeNowString = new DateTime(1970, 1, 1, 1, 0, 0, 0, System.DateTimeKind.Utc);

        // Add amountOfSecondsElapsedSince1970 to the date time starting at 1970, + the amount of hours (for each forecast so 0, 1, and 2)
        dateTimeNowString = dateTimeNowString.AddSeconds(amountOfSecondsElapsedSince1970).AddHours(hour).ToLocalTime();

        // This is the dateTime
        string dateRealWeatherForecastTimee = dateTimeNowString.ToString("yyyyMMddhh");

        return dateRealWeatherForecastTimee;
    }
似乎什么都不管用

使现代化 我在一个新的asp.net核心控制台项目上尝试了以下行,而不是在我正在处理的项目上:

    string dateTimeNowPlusForecaseHour = DateTime.Now.AddHours(hour).ToString("yyyyMMddhh");
真管用!但是为什么我正在做的这个项目不起作用呢

更新2.0: 当我查看项目的时区时,我得到了错误的GMT。当我创建一个新的asp.net核心控制台项目并查看时区时,我得到了w。欧洲,这给了我正确的时间。。。为什么时区错了?这难道不是自动正确的吗

现在返回当前时间和日期。它返回的结构 可以存储为类中的字段或属性。我们对此进行调查 属性及其在其中访问操作系统的实现 就目前而言


此屏幕截图取自。我已经使用了几乎所有的这些,这意味着这些都是经过测试的,肯定会起作用。如果您的时间仍然不正确,请检查您托管应用程序的服务器的时区

但是为什么这对我不起作用呢?我仍然得到了错误的时间。。这是asp.net核心错误吗?不,不,请验证您的计算机小时数或服务器日期时间。现在获取系统计算机的当前日期,服务器验证您计算机中时区的配置我验证了,这是正常的。。但是如果我打开一个新项目,一个.net核心控制台项目,那么它就可以工作了……时区是GMZ,这是错误的。。但当我创建一个新项目时,时区是w。欧洲,它显示了正确的时间!!为什么我正在处理的项目的时区是错误的?对于主机和我的开发环境我的pc,时间是不正确的,所以在这两种环境中都是不正确的。我觉得这是因为这个项目,因为如果我做了一个新的.net核心项目,我会得到正确的时间…你可以通过使用:timezone localZone=timezone.CurrentTimeZone;如果您想知道您的开发环境使用的是哪个时区,请参考下面的链接了解详细信息,谢谢您的回复,它显示GMT,但我在荷兰,所以这是错误的,但是为什么它使用那个时区,为什么不是我自己的时区?因为当您使用DateTime.Now时,它应该基于您的本地时区,对吗?另外,当我创建一个新的asp.net核心控制台项目时,它显示w。欧洲作为时区,这是正确的!!为什么它不动态地决定在我的主项目中使用哪个时区..是的,Datetime.现在返回基于本地时区的值。你的主要项目没有使用你当地的时区,这真的很奇怪。更好的方法是不依赖Datetime.Now。相反,选择DateTime.UtcNow。详情如下: