zoukankan      html  css  js  c++  java
  • ABP官方文档翻译 2.6 定时

    定时

    介绍

      一些应用只针对一个时区,而其他的一些已用则有许多不同的时区。为了满足这样的需求和集中的时间操作,Abp提供了时间操作的通用基础设施。

    时钟

      Clocks是用来操作DateTime值的主要方法。它定义了如下的惊呆属性/方法:

    • Now:根据当前的提供者获取当前时间。
    • Kind:获取当前提供者的DateTimeKind。
    • SupportsMultipleTimezone:获取一个值,指示当前提供者是否可以用于多时区的应用。
    • Normalize:基于当前提供者标准化/转换给定的时间。

      所以,取代使用DateTime.Now,我们使用Clock.Now,实现对时间的抽象:

    DateTime now = Clock.Now;

      Clock内部使用时钟提供者。有三种类型的内置时钟提供者:

    • ClockProviders.Unspecified(UnspecifiedClockProvider):这是默认的时钟提供者,与DateTime.Now功能相同。使用它与不使用没有分别。
    • ClockProviders.Utc(UtcClockProvider):使用UTC时间。Clock.Now等同于DateTime.UtcNow。标注化方法将指定时间转换为utc时间,且将类型设置为DateTimeKind.UTC。它支持多时区。
    • ClockProviders.Local(LocalClockProvider):使用本地计算机时间。标准化方法将指定时间转换为本地时间,并将类型设置为DateTimeKind.Local。

      可以设置Clock.Provider,以使用不同时钟提供者:

    Clock.Provider = ClockProviders.Utc;

      通常在应用一开始的地方设置。(在web应用的Application_Start方法中比较合适)。

    客户端

      Clock可以在客户端使用,在javascript通过abp.clock实现。当在服务端设置Clock.Provider,ABP自动在客户端设置abp.clock.provider。

    时区

      ABP定义了一个名为Abp.Timing.TimeZone(TimingSettingNames.TimeZone常量)的设置,用来存储租主、租户和用户选择的时区。ABP假定时区设置值为一个有效Windows时区Id。它也定义了一个时区映射文件,将一个Windows时区转换为IANA时区,因为一些通用类库使用IANA时区Id。要支持多时区必须使用UtcClockProvider。因为如果UtcClockProvider被使用,所有的时间值使用UTC存储,并且所有的发送到客户端的时间都为UTC形式。然后在客户端我们可以转换UTC时间为用户所在时区的时间,基于用户当前的时区设置。

    客户端

      ABP创建了名为abp.timing.timeZoneInfo的javascript对象,它包含了当前用户的时区信息。这个信息包含Windows和IANA时区Ids,还有一些Windows时区的其他信息。这些信息可以用来转换客户端的时间,并按照客户端的时区显示时间。

    Binders和Converters

    • 在MVC、WebAPI和ASP.NET Core应用里,ABP基于当前时钟提供者,自动标准化从客户端接收的时间。
    • 当使用EntityFramewok或NHibernate模块时,ABP基于当前时钟提供者,自动标准化从数据库接收的时间。

      如果UTC时钟提供者被使用,所有存在数据库的时间都为UTC值,所有从客户端接收的时间都假定为UTC,除非显示指定。

    返回主目录

  • 相关阅读:
    做最简单的自定义控件!
    DataGridView取消默认选中行
    好看的vs皮肤
    rdlc插入图像(.net2010)
    学习c#反射的一个例子
    C#Winform中ToolTip的简单用法
    rdlc报表显示条码 .
    vb.net ctype用法
    一些常用的正则表达式 .
    C# WinForm中MenuStrip动态菜单使用总结
  • 原文地址:https://www.cnblogs.com/xajh/p/6803959.html
Copyright © 2011-2022 走看看