相关疑难解决方法(0)

夏令时和时区最佳实践

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

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

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

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

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

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

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

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

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

timezone datetime utc datetimeoffset dst

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

无论日期如何,都要比较时间

我有一个对象,其目前的属性为DateTime.

该对象在一个时间范围内被标记为有效.默认值为00:00:00至23:59:59

用户在UI中输入值,并通过以下方式设置属性:

new DateTime(DateTime.Now.Year, 
             DateTime.Now.Month, 
             DateTime.Now.Day, 
             model.Hours, 
             model.Minutes, 
             model.Seconds)
Run Code Online (Sandbox Code Playgroud)

然后在它到达数据库时将其转换为UTC.

今天的日期是2013年8月29日.如果印度的同事运行此程序,它将在2013年8月28日18:30:00将数据存储在数据库中,因为它们比UTC早5.5小时,因此2013年8月29日00:00:00变为昨天.

当逻辑尝试确定对象是否有效时,逻辑是:

if (DateTime.UtcNow.TimeOfDay > model.MyPropertyFromDB.TimeOfDay)
Run Code Online (Sandbox Code Playgroud)

我们正在尝试确定当前时间是否在00:00:00和23:59:59之间

这是因为14:00(当前时间)不大于18:30

什么是比较时间的最佳方法?

将值存储为DateTimeOffSet帮助,是否使用ToLocal()确定?

其他考虑因素是印度的用户正在使用在英国托管的应用程序,因此需要了解时区.

谢谢

.net c# datetime

8
推荐指数
1
解决办法
1001
查看次数

Kendo Grid 中的日期问题

我的应用程序正在运行时区为UTC+05:30 的服务器。我的客户端机器有UTC-05:00时区。

现在假设他进入1989年12月31日在一个文本框,并保存表单,当他在剑道网查看详细的日期显示为1989年12月30日,而不是1989年12月31日

我通过更改电脑的时区来调试应用程序,在调试中我发现

  1. 直到插入/更新语句被触发,日期才会改变。它保持为12/31/1989
  2. 在数据库中日期也存储为12/31/1989
  3. 当我从数据库中获取数据时,模型和控制器中的日期仍然是12/31/1989
  4. 但是当我使用以下查询以 JSON 格式将数据返回到剑道网格时,它在页面上显示日期为12/30/1989

C#

public ActionResult GetPatients([DataSourceRequest] DataSourceRequest request, int includePatientId = 0)
{
  return Json(this.patienModel.RetrieveActivePatients().ToDataSourceResult(request));
}
Run Code Online (Sandbox Code Playgroud)

剑道格子

@(Html.Kendo().Grid<RxConnectEntities.Patient>
       ().Name("PatientList")
       .Columns(columns =>
       {
         columns.Bound(p => p.PatientID).Visible(false);
         columns.Bound(p => p.Name).Width(100);
         columns.Bound(p => p.Gender).Width(80);
         columns.Bound(p => p.DateOfBirth).Width(90)
                .Format("{0:MM/dd/yyyy}")
                .EditorTemplateName("DateOfBirth")
                .Filterable(false).HtmlAttributes(new { id = "gridDateOfBirth" })
                .ClientTemplate("#: kendo.toString(kendo.parseDate(data.DateOfBirth),'MM/dd/yyyy') #");
                columns.Bound(p => p.PhoneNumber).Title("Phone Number").Width(110);
                columns.Command(command =>
                {
                  command.Custom("Select").Click("OnSelectRow");
                  command.Custom("Edit").Text("Edit").Click("EditGrid"); …
Run Code Online (Sandbox Code Playgroud)

sql-server asp.net-mvc kendo-ui kendo-grid

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

ASP.Net core MVC FromQuery UTC 中的日期时间

我有一些类似的代码:

 [HttpGet("SearchStuff")]
    public IActionResult SearchStuff([FromQuery]DateTime from, [FromQuery]DateTime to)
Run Code Online (Sandbox Code Playgroud)

我想确保我收到的 UTC 格式如​​下: 如果指定了时区,则转换为 UTC 如果未指定时区,则假定 UTC 并指定为 UTC

我尝试像这样从客户端发送 utc(客户端在本地时间工作),它的格式符合我的预期,但不幸的是服务器端的日期时间被转换为服务器的本地时间。如果我使用 ToString("s") 服务器会收到正确的日期时间值,但不幸的是 DatetimeKind.Unspecified:

protected string Format(DateTime t)
{
    return t.ToUniversalTime().ToString("o");
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-core

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