相关疑难解决方法(0)

夏令时和时区最佳实践

我希望能够将这个问题及其答案作为处理夏令时的权威指南,特别是处理实际的变更问题.

如果您有任何要添加的内容,请执行此操作

许多系统依赖于保持准确的时间,问题在于由于夏令时改变时间 - 向前或向后移动时钟.

例如,在订单获取系统中有一个业务规则取决于订单的时间 - 如果时钟发生变化,规则可能不那么明确.如何保持订单的时间?当然有无数的场景 - 这只是一个说明性的场景.

  • 你是如何处理夏令时问题的?
  • 您的解决方案中有哪些假设?(在这里寻找背景)

同样重要的是,如果不是这样的话:

  • 你尝试了哪些不起作用?
  • 为什么不起作用?

我会对编程,操作系统,数据持久性和该问题的其他相关方面感兴趣.

一般答案很好,但我也希望看到细节,特别是如果它们只在一个平台上可用.

timezone datetime utc datetimeoffset dst

2021
推荐指数
20
解决办法
40万
查看次数

为什么静态变量被视为邪恶?

我是一名Java程序员,对企业界不熟悉.最近我使用Groovy和Java 开发了一个应用程序.我编写的所有代码都使用了相当多的静态代码.高级技术部门要求我减少使用的静力学数量.我用Google搜索了同样的东西,我发现很多程序员都反对使用静态变量.

我发现静态变量使用起来更方便.而且我认为它们也是有效的(如果我错了,请纠正我),因为如果我必须对一个类中的函数进行10,000次调用,我很乐意将该方法设置为静态并使用简单的方法Class.methodCall()而不是用10,000个类的实例来混乱内存,对吧?

此外,静态减少了代码其他部分的相互依赖性.他们可以充当完美的国家持有者.除此之外,我发现静态在一些语言中得到广泛实现,如SmalltalkScala.那么为什么程序员(尤其是Java世界)中普遍存在对静态的压迫呢?

PS:如果我对静力学的假设是错误的,请纠正我.

java static

606
推荐指数
16
解决办法
23万
查看次数

我应该将什么值传递给TimeZoneInfo.FindSystemTimeZoneById(String)?

我想使用该TimeZoneInfo.FindSystemTimeZoneById(String)方法,但我不知道使用什么值作为输入?

我在哪里可以获得id所需的值列表FindSystemTimeZoneById

.net c# timezone

81
推荐指数
5
解决办法
6万
查看次数

什么时候你会喜欢DateTime Over DateTimeOffset

几个月前,我被介绍到新型DateTimeOffset,很高兴DateTime关于时区的缺陷终于得到了解决.

但是,我想知道使用这种新类型是否有任何开销或问题.

我在一个多语言环境的Web应用程序上工作.有没有人知道任何可以影响我的东西,只是在我的所有日​​期/时间工作中使用它?这里有滥用的窗口吗?

参考:DateTimeOffset:Justin Van Patten在.NET 3.5中的一个新的DateTime结构

.net datetime datetimeoffset

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

使用PST/CEST/UTC /等格式的时区解析DateTime

我正在尝试解析类似于的国际日期时间字符串:

24-okt-08 21:09:06 CEST
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有类似的东西:

CultureInfo culture = CultureInfo.CreateSpecificCulture("nl-BE");
DateTime dt = DateTime.ParseExact("24-okt-08 21:09:06 CEST",
    "dd-MMM-yy HH:mm:ss ...", culture);
Run Code Online (Sandbox Code Playgroud)

问题是我应该在格式字符串中使用'...'?查看自定义日期和时间格式字符串 MSDN页面似乎没有列出用于以PST/CEST/GMT/UTC格式解析时区的格式字符串.

.net c# timezone datetime parsing

46
推荐指数
3
解决办法
7万
查看次数

如何设置DateTime值的时区(或种类)?

我的意思是将严格的UTC时间存储在DateTime变量中,并以ISO 8601格式输出.

为了做到最后我使用.ToString("yyyy-MM-ddTHH:mm:sszzz"),它发现时区是UTC + 01:00.

我试过使用.Kind = DateTimeKind.Utc,但它说Kind属性没有setter.

如何以UTC格式明确指定时间?Kind属性是如何设置的?

.net c# timezone datetime

41
推荐指数
3
解决办法
8万
查看次数

如何在特定时区转换DateTime?

我发现很难理解UTC是如何工作的.

我必须做以下事情,但如果我得到了正确的结果,我仍然感到困惑.

目标:

  1. 确保数据库中的所有已保存日期均为UTC格式
  2. 更新DefaultTimezone是在马尼拉时间
  3. 确保所有返回的日期都在马尼拉时间

所以代码是:

public ConvertDate(DateTime? dateTime)
{
    if (dateTime != null)
    {
        Value = (DateTime)dateTime;
        TimeZone = GetFromConfig.DefaultTimeZone(); 
    }
}


public ConvertDate(DateTime? dateTime, int GMTTimeZone)
{
    if (dateTime != null)
    {
        Value = (DateTime)dateTime;
        TimeZone = GMTTimeZone;
    }
}


public int TimeZone
{
    get { return m_TimeZone; }
    set { m_TimeZone = value; }
}


DateTime m_Value;
public DateTime Value
{
    get { return m_Value; }
    set 
    { 
        m_Value = value;
        DateTime converted = m_Value.ToUniversalTime().ToLocalTime();
    } …
Run Code Online (Sandbox Code Playgroud)

c# datetime utc

30
推荐指数
3
解决办法
7万
查看次数

时区战略

我正在构建一个MVC 3应用程序,其中用户可能不在同一时区,因此我的意图是以UTC格式存储所有内容,并在视图中将UTC转换为本地时间,并在提交时将本地时间转换为UTC.

做一些浏览虽然似乎没有很多好的解决方案.说实话,我有点期望一个属性可用于将UTC时间自动转换为本地时间,但似乎不存在.

我觉得只是努力将每个输入手动转换为UTC并手动将每个视图转换为本地时间显示将非常容易出错并导致难以检测到时间未转换为或未转换的错误.

关于如何将此作为一般策略的任何建议?

编辑 每个人似乎都非常坚持"如何获得客户端时区"这篇文章,正如我在其中一篇评论中提到的那样,并不是我关注的问题.我很好用一个用户设置确定他们的时区,所以假设我已经知道客户端时区是什么...这不能解决我的问题.

现在,在我渲染日期的每个视图上,我需要调用一个方法来从utc在本地时区渲染它.每次我向服务器发送提交日期时,我都需要将其从本地时区转换为UTC.如果我忘记这样做会有问题...提交的日期将是错误的或客户端报告和过滤器将是错误的.

我希望存在的是一种更自动化的方法,特别是因为视图模型在MVC 3中强类型我希望sum魔术能够至少自动在时区中呈现,如果不处理提交,就像日期格式或范围可以由属性控制.

所以喜欢

[DateRange]
Public DateTime MyDate
Run Code Online (Sandbox Code Playgroud)

我可以有类似的东西

[ConvertToUTC(offset)]
Public DateTime MyDate
Run Code Online (Sandbox Code Playgroud)

无论如何,我想我的唯一方法就是编写自定义数据注释以在时区中呈现它,并在MVC 3模型绑定器上覆盖,以便转换传入日期,除非我想在方法中包装任何日期呼叫.因此,除非有人有进一步的意见或建议,否则它将是这两个选项中的一个,我只是惊讶于已经不存在的事情.

如果我确实实施了解决方案,我一定会发布它.

编辑2 像这样的 http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx用于MVC 3视图和视图模型是我正在寻找的.

最终编辑 我将epignosisx的答案标记为正确,但也有一些评论要添加.我在这里发现了类似的东西: http: //dalldorf.com/blog/2011/06/mvc3-timezones-1/ 通过将时区放在cookie中为第2部分中需要的人提供时区的实现(链接如下,因为文章第一部分到第2部分的链接不起作用) http://dalldorf.com/blog/2011/09/mvc3-timezones-2/

重要的是要注意这些方法,你必须使用Editfor和Displayfor而不是像TextForFor这样的东西,因为只有EditFor和DisplayFor使用元数据提供程序来告诉MVC如何在模型上显示该类型的属性.如果直接在视图中访问模型值(@ Model.MyDate),则不会进行转换.

javascript c# timezone utc asp.net-mvc-3

22
推荐指数
1
解决办法
5440
查看次数

JavaScriptSerializer从日期减去一天

我正在使用JavaScriptSerializer序列化DateTime,但是当我反序列化它显示从序列化日期开始减少一天:

这是测试:

  DateTime startDate=new DateTime(2012,1,20);//set the 20th of January
  JavaScriptSerializer  serializer=new JavaScriptSerializer();
  string serializeDate= serializer.Serialize(startDate);
  DateTime afterDeserialize= serializer.Deserialize<DateTime>(serializeDate);//I get 19th of Jan
  Assert.Equals(startDate, afterDeserialize);
Run Code Online (Sandbox Code Playgroud)

首先我认为它是因为javascript日期时间格式,但我知道javascript月份是零索引0=January,但我比原始日期少一天.

datetime javascriptserializer c#-4.0

20
推荐指数
2
解决办法
8023
查看次数

使用时区将字符串格式化为日期时间

我有一个string s = "May 16, 2010 7:20:12 AM CDT我想转换为DateTime对象.在下面的代码中,我尝试使用已知格式解析文本时,无法转换日期格式错误.

timeStamp = matches[0].Groups[1].Value;
dt = DateTime.ParseExact(timeStamp, "MMM dd, yyyy H:mm:ss tt", null);
Run Code Online (Sandbox Code Playgroud)

时区以CDT UTC的形式出现......我认为是什么导致问题或我的格式?

.net c# timezone parsing

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