C# 服务器时间增加10小时

C# 服务器时间增加10小时,c#,datetime,C#,Datetime,在winform中,我有一个表示序列号的字符串,其组成如下: PR(前缀)+ss mm hh dd mm yy 结果是PR010110120914。现在是保存记录的服务器时间。 这是我的代码,其中rawDate是数据库中的上述字符串: string datetimeinserver = DateTime.ParseExact(rawDate.Substring(2), "ssmmHHddMMyy", CultureInfo.InvariantCul

在winform中,我有一个表示序列号的字符串,其组成如下:

PR(前缀)+ss mm hh dd mm yy

结果是PR010110120914。现在是保存记录的服务器时间。 这是我的代码,其中rawDate是数据库中的上述字符串:

string datetimeinserver = DateTime.ParseExact(rawDate.Substring(2),
            "ssmmHHddMMyy",
            CultureInfo.InvariantCulture)
                .ToString("HH:mm:ss on dd/MM/yyy");

由于各种原因,我需要在datetimeinserver上增加10个小时,我已经把事情搞得一团糟,没有结果。有没有一种简单的方法可以让datetimeinserver增加10个小时

为此使用
DateTime.AddHours
。只需将代码更改为:

DateTime dt = DateTime.ParseExact(rawDate.Substring(2),
        "ssmmHHddMMyy",
        CultureInfo.InvariantCulture);
dt = dt.AddHours(10);
string datetimeinserver = dt.ToString("HH:mm:ss on dd/MM/yyy");

使用
DateTime.AddHours
进行此操作。只需将代码更改为:

DateTime dt = DateTime.ParseExact(rawDate.Substring(2),
        "ssmmHHddMMyy",
        CultureInfo.InvariantCulture);
dt = dt.AddHours(10);
string datetimeinserver = dt.ToString("HH:mm:ss on dd/MM/yyy");
?


DateTime。ParseExact
将返回一个
DateTime
对象。然后,您可以使用如下方法:

DateTime tempDt = DateTime.ParseExact(rawDate.Substring(2),
                  "ssmmHHddMMyy",
                   CultureInfo.InvariantCulture);

tempDt = tempDt.AddHours(10);

string datetimeinserver = tempDt.ToString("HH:mm:ss on dd/MM/yyy");
您也可以在一条语句中执行相同的操作,如:

string datetimeinserver = DateTime.ParseExact(rawDate.Substring(2),
            "ssmmHHddMMyy",
            CultureInfo.InvariantCulture)
            .AddHours(10)
                .ToString("HH:mm:ss on dd/MM/yyy");

DateTime.ParseExact
将返回一个
DateTime
对象。然后,您可以使用如下方法:

DateTime tempDt = DateTime.ParseExact(rawDate.Substring(2),
                  "ssmmHHddMMyy",
                   CultureInfo.InvariantCulture);

tempDt = tempDt.AddHours(10);

string datetimeinserver = tempDt.ToString("HH:mm:ss on dd/MM/yyy");
您也可以在一条语句中执行相同的操作,如:

string datetimeinserver = DateTime.ParseExact(rawDate.Substring(2),
            "ssmmHHddMMyy",
            CultureInfo.InvariantCulture)
            .AddHours(10)
                .ToString("HH:mm:ss on dd/MM/yyy");

string datetimeinserver=DateTime.ParseExact
。。真的吗?如果这10个小时与时区有任何关系,你应该说清楚。如果你在处理时区问题,你真的应该弄清楚你要做什么样的调整。更糟糕的是,提供的示例值实际上没有使用代码中提供的格式进行解析。它在某个地方丢失了一段。@Damien_,不相信我的人,我正在修改一个现有的代码,并试图最小化更改。它处理的是时区,但我对数据库中的现有字符串无能为力,因此我看到的简单方法是为旧记录添加小时数,并在UTC时间重新保存所有记录。从那里我将使用UTC时间,不管服务器位置如何,至少我有一个唯一的引用。@MichaelPerrenoud您是对的,对不起。我把它整理好了。
string datetimeinserver=DateTime.ParseExact
。。真的吗?如果这10个小时与时区有任何关系,你应该说清楚。如果你在处理时区问题,你真的应该弄清楚你要做什么样的调整。更糟糕的是,提供的示例值实际上没有使用代码中提供的格式进行解析。它在某个地方丢失了一段。@Damien_,不相信我的人,我正在修改一个现有的代码,并试图最小化更改。它处理的是时区,但我对数据库中的现有字符串无能为力,因此我看到的简单方法是为旧记录添加小时数,并在UTC时间重新保存所有记录。从那里我将使用UTC时间,不管服务器位置如何,至少我有一个唯一的引用。@MichaelPerrenoud您是对的,对不起。我把它整理好了。