我已尝试了所有方法来获取当前的年/月/日/小时,但它不起作用。我总是在1小时后得到数据。因此,如果在荷兰是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;
}
似乎没有任何作用。请帮助我解决这个问题。
更新:
我在新的asp.net核心控制台项目(而不是我正在处理的项目)上尝试了以下行:
string dateTimeNowPlusForecaseHour = DateTime.Now.AddHours(hour).ToString("yyyyMMddhh");
行得通!但是为什么它不适用于我正在从事的项目?
Update2.0:当我查看项目的时区时,会出现GMT错误。当我创建一个新的asp.net核心控制台项目并查看时区时,我得到了w。欧洲,这给了我正确的时间...为什么时区错误?那不应该自动正确吗?
DateTime.Now返回当前时间和日期。它返回的结构可以存储为类中的字段或属性。我们调查这个属性及其实现—访问操作系统的位置当前时间。
string dateTimeNowPlusForecaseHour = DateTime.Now.ToString("yyyyMMddHH");
此屏幕截图取自here。而且我几乎使用了所有这些,这意味着它们已经过测试并且肯定可以正常工作。如果小时数仍然不正确,请检查托管应用程序的服务器所在的时区。