相关疑难解决方法(0)

DateTime与DateTimeOffset

目前,我们有一种以TimeZone感知方式处理.net DateTimes的标准方法:每当我们生成一个DateTimeUTC时(例如使用DateTime.UtcNow),每当我们显示一个时,我们就会从UTC转换回用户的本地时间.

这工作正常,但我一直在阅读DateTimeOffset它如何捕获对象本身的本地和UTC时间.所以问题是,使用DateTimeOffsetvs我们已经做的事情有什么好处?

.net c# timezone datetime datetimeoffset

669
推荐指数
10
解决办法
19万
查看次数

确定用户的时区

Web服务器是否有标准方法可以确定用户在网页中的时区?

也许来自HTTP标头或user-agent字符串的一部分?

html browser timezone user-agent timezone-offset

597
推荐指数
25
解决办法
18万
查看次数

如何检测用户的时区?

我需要根据IP或http标头知道我的用户目前在哪个时区.

关于这个问题,我得到了很多答案,但我无法理解这些答案.有人说使用-new Date().getTimezoneOffset()/60(从这里).但是这是什么意思?

date_default_timezone_set("Asia/Calcutta");在(index.php)页面的根目录中有一个.因此,我必须动态获取时区并将其设置为代替Asia/Calcutta.

javascript php timezone

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

Noda Time入门

我希望将Noda时间用于一个相当简单的应用程序,但是我很难找到任何文档来处理一个非常基本的用例:

我有一个登录用户,并将在设置中存储他们的首选时区.来自客户端的任何日期/时间以已知的文本格式(例如"dd/MM/yyyy HH:mm"),具有已知的时区id(例如"Europe/London").我计划将这些时间转换为UTC/Noda Instants,以防止需要在数据库中存储每个日期的时区信息.

首先,这听起来像是一种明智的做法吗?我可以自由地改变任何东西,所以很乐意设置一个更好/更明智的课程.数据库是MongoDb,使用C#驱动程序.

我试过的是沿着这些方向,但努力克服第一步!

var userSubmittedDateTimeString = "2013/05/09 10:45";
var userFormat = "yyyy/MM/dd HH:mm";
var userTimeZone = "Europe/London";

//noda code here to convert to UTC


//Then back again:
Run Code Online (Sandbox Code Playgroud)

我知道有人会问"你有什么尝试",我所拥有的是各种失败的转换.很高兴被指向"Noda时间入门"页面!

.net c# datetime nodatime

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

为什么DateTime.Now和DateTime.UtcNow不是我当前的本地日期时间?

我们使用DateTime.Now,但时间不等于我们的服务器时间!

当我运行我的项目时,这些是DateTime属性值:

DateTime.Now = {15/14/04 05:20:18 AM}
DateTime.UtcNow = {15/14/04 12:20:18 PM}
Run Code Online (Sandbox Code Playgroud)

但我目前的本地系统时间是:

15/14/04 04:50:18 AM
Run Code Online (Sandbox Code Playgroud)

我的时区是德黑兰(UTC + 03:30).

这是我第一次看到这种行为!为什么不DateTime.Now等于我的电脑时间?

在此输入图像描述

c# asp.net datetime visual-studio

18
推荐指数
2
解决办法
8990
查看次数

我应该如何填写Noda Time的IANA/Olson时区列表?

我在应用程序中使用NodaTime,我需要用户从下拉列表中选择他们的时区.我有以下软要求:

1)该列表仅包含对于真实场所现在和将来合理有效的选择.应过滤掉历史,模糊和通用时区.

2)列表应首先按UTC偏移量排序,然后按时区名称排序.这有希望将它们置于对用户有意义的顺序中.

我写了下面的代码,它确实有效,但并不完全是我所追求的.可能需要调整滤波器,我宁愿让偏移代表基本(非dst)偏移,而不是当前偏移.

建议?建议?

var now = Instant.FromDateTimeUtc(DateTime.UtcNow);
var tzdb = DateTimeZoneProviders.Tzdb;
var list = from id in tzdb.Ids
           where id.Contains("/") && !id.StartsWith("etc", StringComparison.OrdinalIgnoreCase)
           let tz = tzdb[id]
           let offset = tz.GetOffsetFromUtc(now)
           orderby offset, id
           select new
           {
               Id = id,
               DisplayValue = string.Format("({0}) {1}", offset.ToString("+HH:mm", null), id)
           };

// ultimately we build a dropdown list, but for demo purposes you can just dump the results
foreach (var item in list)
    Console.WriteLine(item.DisplayValue);
Run Code Online (Sandbox Code Playgroud)

timezone nodatime

16
推荐指数
1
解决办法
6466
查看次数

DateTime.Now给出错误的时间

我正在使用C#在Visual Studio中开发一个应用程序.当我创建一个对象的新实例时,我想将当前日期和时间附加到它.使用DateTime.Now时间减少了一个小时.

我认为它是一个时区或夏令时问题.我尝试过System.Globalization.CultureInfo.CurrentCulture.ClearCachedData()之前的呼叫,DateTime.Now但得到了相同的结果.我该如何解决这个问题?

.net c# datetime azure

5
推荐指数
1
解决办法
9553
查看次数