C#获取UTC中特定时区的午夜时间

时间:2018-07-07 07:54:34

标签: c# datetime timezone

我想在 UTC 中获取特定时区的午夜时间。例如考虑我的本地计算机时区为 +05:30 。请看下面的截图。我使用https://www.epochconverter.com/网站进行了转化。

enter image description here

在上面的示例中,我在 +05:30 中输入午夜时间,并为此提供了UTCtime。

  

注意:我将机器时区重置为(UTC)协调世界时。

所以我想在这里找到UTC日期时间。为此,我存储了用户时区信息。我使用以下代码获取时区信息。

TimeZoneInfo userTz = TimeZoneInfo.FindSystemTimeZoneById(LoginSessionDO.TimeZoneId);

因此,我想在 UTC 中找到任何时区的午夜时间。我该如何在C#中做到这一点?

  

例如+05:30-2018-07-07 00:00:00 UTC- 2018-07-06 18:30:00

很抱歉未解决的问题。我将解释我的情况。

编辑:-

我已经在包含Sql server列的dateofactivity表中存储了一些用户的活动数据。所有记录日期时间都存储在UTC中。因此,在前端,我想从午夜(当几天开始)获取用户今天的所有活动记录。如果用户处于+05:30时区,并且他想获取所有 2018年7月7日00:00:00 记录,那么我需要通过 2018年7月6日18:30:00 欧洲/阿姆斯特丹(CEST)GMT +02:00 ,因此想在UTC中找到欧洲/阿姆斯特丹的午夜时间。

4 个答案:

答案 0 :(得分:4)

在您当地的时区中获取午夜时间,获取您所在时区的时区信息,然后致电# lower <- 0; upper <- 10 lower <- c(0, 0); upper <- c(10, 10) nms <- paste0("p", seq_along(upper)) names(lower) <- names(upper) <- nms f <- function(x, ...) { with(list(...), if (...length() == 1) p1 * x else p1 * x + p2) } fo <- sprintf("demand ~ f(Time, %s)", toString(paste(nms, "=", nms))) nlrob(fo, data = BOD, lower = lower, upper = upper, method = "tau")

ConvertTimeToUtc

答案 1 :(得分:2)

使用DateTimeOffset

它需要一个DateTime和一个TimeSpan作为偏移量,您可以将其用作时区,并且具有一个ToUniversalTime方法。

也有涵盖此主题的优质文档: https://docs.microsoft.com/en-us/dotnet/standard/datetime/

答案 2 :(得分:1)

 var midNightTime = new DateTime(2018, 7, 7, 0, 0, 0);
 TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); // USE YOUR TIMEZONE INFO HERE INSTEAD.
 DateTime dateTimeInZone = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(midNightTime, timeZone.StandardName);
 DateTime universalTime = dateTimeInZone.ToUniversalTime();

如果您只是在寻找偏移量,请参见此处-Get Timezone Offset of Server in C#

答案 3 :(得分:-1)

现在UTC时间:

TEMP.file

解析为UTC:

DateTime.UtcNow()

解析为本地时间:

DateTime.Parse("2018-05-08 12:00:00").ToUniversalTime()