zoukankan      html  css  js  c++  java
  • ABP框架

    文档目录

    本节内容:

    简介

    虽然有些应用目标市场只是在一个时区,有些应用目标市场是许多不同时区,为满足这种需求并集中化日期操作,ABP为日期操作提供公共基础。

    时钟

    Clock是与DateTime值合作的主要对象,它定义了以下静态属性/方法:

    • Now:通过当前供应器获取当前时间。
    • Kind:获取当前供应器的DateTimeKind。
    • SupportsMultipleTimezone:获取一个值,指示当前供应器能否支持多时区应用。
    • Normalize:把给定的DateTime标准化/转换成适合当前供应器。

    所以,我们用抽象了Colok.Now的DateTime.Now代替DateTime.Now:

    DateTime now = Clock.Now;

    Clock内部使用了时钟供应器。有三种内置的时钟供应器:

    • ClockProviders.Unspecified(UnspecifiedClockProvider):默认的时钟供应器,行为就像DateTime.Now。它使你完全不用Clock类。
    • ClockProviders.Utc(UtnClockProvideder):用UTC时间,Clock.Now为DateTime.UtcNow。Normalize(标准化)方法把给定的时间转换成utc时间,并设它的Kind(种类)为DateTimeKind.Local。
    • ClockProviders.Local(LocalClockProvider):用计算机的本地时间,Normailize方法把给定的时间转换成当地时间,并设置它的种类为DateTimeKind.UTC。它支持多时区。

    你可设置Clock.Provider,以便使用一个不同的时钟供应器:

    Clock.Provider = ClockProviders.Utc;

    这是在应用程序开始前(在Web应用里就是Application_Start)通常的做法。

    客户端

    通过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创建一个Javascript对象,名为abp.timing.timeZoneInfo,为当前用户包含时区信息。该信息包含Windows和IANA时区id和一些windows时区额外信息。这些信息可用用户的时区转换和显示给用户。

    绑定器和转换器

    • 在MVC、Web Api和Asp.new Core项目里,ABP自动把接收到的日期按当前时钟供应器标准化。
    • 当使用EntityFramework或NHibernate模块时,ABP自动把接收自数据库的日期按当前时钟供应器标准化。

    如果使用UTC时钟供应器,所有的存储在数据库中的日期都认为是UTC值,和所有接收自客户端的日期都认为是UTC,除了显式指明。

  • 相关阅读:
    netcore 报错 502 缺少运行时
    简单工厂模式
    net之-------状态模式
    pc端字体正常, 缩放浏览器正常,手机模式查看出问题
    我的后续情况
    [wip]Berty
    利用FileReader对象回显图片
    测试
    CMP云管平台竞标产品
    nacos spring cloud
  • 原文地址:https://www.cnblogs.com/kid1412/p/5991436.html
Copyright © 2011-2022 走看看