标签: datetimeoffset

假设时区时将字符串解析为 DateTimeOffset

可能是一个超级简单的解决方案,但我显然错过了一些东西。

我有一个值为“2020/07/29 13:30:00”的字符串对象。

我如何将其解析为 DateTimeOffset 对象,并假设该解析时间的时区是“GMT 标准时间”,或者是我希望指定的任何 TimeZoneInfo?

然后,我如何获取该 DateTimeOffset,并返回其 Utc 时间,但返回到我选择的任何指定时区?

非常感谢

c# timezone datetime datetimeoffset

3
推荐指数
1
解决办法
3417
查看次数

将DateTime偏移应用于US Eastern Timezone

我有一个生成vCal和iCal文件的页面,可以将事件导入Outlook和iCal.这些邮件客户端(Outlook和iCal)将接收UTC中的日期,因为他们知道用户的偏移量并将处理正确的时间.我们编写此代码的客户端基于美国东部时区,我也是.我们的主机位于中部时区(距离东部1小时).我想让代码处理这个没有任何硬编码的偏移量.我的代码目前从我们的CMS获得DateTime并转换为UTC for Outlook/iCal.这意味着CMS的DateTime值相对于托管位置:

// Start Date Time
sb.AppendFormat("DTSTART:{0}\n", thisEvent.StartDate.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
Run Code Online (Sandbox Code Playgroud)

当我在本地运行时,一切都很好,因为CMS中的DateTime基于我们客户端的东部时区,所以我是,所以进程是东部 - > UTC - >进入Outlook然后进入UTC - >东部一切都很好.当我在Central中部署到服务器时,来自CMS的DateTime距离Eastern一小时.如何在转换为UTC之前自动从东方获取偏移并添加它?我显然需要这个来处理标准时间(EST)和日光时间(EDT).我想以编程方式执行它而不使用硬编码值,因此无论您处于什么时区,它都能正常工作.即如果我将此代码交给某人在印度进行开发,它应该自动处理其本地服务器的偏移量和相应调整.

我需要做这样的事情,我在转换为UTC之前将偏移应用到东部时间:

sb.AppendFormat("DTSTART:{0}\n", thisEvent.StartDate.ApplyEasternOffset().ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
Run Code Online (Sandbox Code Playgroud)

很抱歉,如果这是之前讨论过的主题,我只是不确定找到这样的问题的最佳条款.提前致谢.

c# timezone datetime datetimeoffset datetime-format

2
推荐指数
2
解决办法
1万
查看次数

datetimeoffset(SQL Server)的夏令时支持

如果您在MSDN中查看此帮助主题:

SQL Server日期和时间限制

它说:"没有服务器端夏令时(DST)支持datetimeoffset."

任何人都能解释这意味着什么吗?

我读它的方式是:说DST生效,我使用SYSDATETIMEOFFSET().结果以这种格式出现:

YYYY-MM-DD hh:mm:ss [.nnnnnnn] [{+ | - } hh:mm]

HH值将一个小时的背后我的实际的本地时间(好像DST未生效).是对的吗?

sql-server datetimeoffset dst

2
推荐指数
1
解决办法
1663
查看次数

DateTimeOffset正确用法

如果我有一个表示有效UTC时间的DateTime实例,以及将该DateTime转换为适用它的时区的偏移量,我该如何构造一个DateTimeOffset实例来表示它?

var utcDateTime = new DateTime(2011, 02, 29, 12, 43, 0, /*DateTimeKind.Utc*/);
var localOffset = TimeSpan.FromHours(2.0);

var dto = ...

// Here the properties should be as follows;
// dto.UtcDateTime = 2011-02-29 12:43:00
// dto.LocalDateTime = 2011-02-29 14:43:00
Run Code Online (Sandbox Code Playgroud)

也许我没有正确理解DateTimeOffset结构,但我无法获得预期的输出.

提前致谢

.net c# timezone datetime datetimeoffset

2
推荐指数
1
解决办法
2万
查看次数

如何在Powershell中设置3个小时之前到现在的时间范围?

我需要通过设置2个字符串参数来创建一个自3个小时之前和现在开始的时间范围:

[string] since
[string] before
Run Code Online (Sandbox Code Playgroud)

而每个参数的DateTimeOffset格式为:“ yyyy-MM-dd HH:mm:ss z:00”

如何在PowerShell中设置参数的前后值?

powershell datetimeoffset

2
推荐指数
1
解决办法
3493
查看次数

将Datetime迁移到DateTimeOffset

时间到了我正在将SQL Server中的DateTime字段迁移到DateTimeOffset的应用程序中。

想知道SQL Server中是否有任何自动化工具可以帮助我解决这个问题,因此我不需要编写一堆alter table语句的脚本?

sql datetime datetimeoffset sql-server-2008

2
推荐指数
1
解决办法
1974
查看次数

Excel日期时间,偏移到C#DateTime

我有一张excel表,其中有一个日期,我使用一些JavaScript或VBA(没关系).

然后我最终得到一个如下所示的日期: "Tue Feb 4 00:00:00 UTC+0100 2014"

是否有任何版本的版本将其转换为C#DateTime?如您所见,我不使用时间部分,因此也不关心UTC偏移.

c# datetime datetimeoffset

2
推荐指数
1
解决办法
1112
查看次数

DateTimeOffset默认值

我想将默认值设置为DateTimeOffset - 它不应该是DateTime.Now而是DateTime.MinValue或default(DateTime)

有什么想法我该怎么办?这段代码:

DateTimeOffset d = new DateTimeOffset(DateTime.MinValue)
Run Code Online (Sandbox Code Playgroud)

抛出一个例外

default datetimeoffset

2
推荐指数
1
解决办法
7373
查看次数

为什么DateTime.TryParseExact()为这些输入字符串返回不同的时区?

我有一个最简单的方法,将字符串解析为DateTime 但返回类型是DateTimeOffset?.

我期待输出

2011-01-11 00:00:00 +01:00
2011-10-11 00:00:00 +01:00
Run Code Online (Sandbox Code Playgroud)

但事实确实如此

2011-01-11 00:00:00 +01:00
2011-10-11 00:00:00 +02:00
Run Code Online (Sandbox Code Playgroud)

为什么我会这样做?我的测试程序如下.

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Parse("20110111").ToString());
        Console.WriteLine(Parse("20111011").ToString());
        Console.ReadLine();
    }

    public static DateTimeOffset? Parse(string date)
    {
        DateTime parsedDate;
        if (DateTime.TryParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate))
        {
            return parsedDate;
        }

        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# datetime datetimeoffset

2
推荐指数
1
解决办法
276
查看次数

更改DateTimeOffset.Offset属性?

我的最终目标是从客户端获得没有偏移的通用时间 - 只是UTC时间.我试着这样做:

Javascript : (new Date()).toUTCString(),输出日志:Thu, 17 Mar 2016 15:13:23 GMT,这正是我需要的.

然后我把它带到服务器并尝试将其转换为DateTimeOffset:

string dateTimeOffsetPattern = "ddd, dd MMM yyyy HH:mm:ss 'GMT'"; 

DateTimeOffset clientLoginTime = DateTimeOffset.ParseExact
    (timeStringFromClient, dateTimeOffsetPattern, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

结果如下:

3/17/2016 3:13:23 PM -04:00 
Run Code Online (Sandbox Code Playgroud)

它以某种方式调整了我本地(东方)偏移的时间.我不希望这种情况发生,我希望它只返回UTC时间,如下所示:

3/17/2016 3:13:23 PM +00:00
Run Code Online (Sandbox Code Playgroud)

PS我刚刚问了一个关于这个的问题,我道歉,因为我觉得它应该很容易,但我不明白.这应该非常简单,但看起来offset没有setter(除非我像往常一样完全缺少一些C#基础知识):

public TimeSpan Offset { get; }
Run Code Online (Sandbox Code Playgroud)

c# datetimeoffset

2
推荐指数
1
解决办法
5452
查看次数