文档目录

本节内容:

简介

虽然有些应用目标市场只是在一个时区,有些应用目标市场是许多不同时区,为满足这种需求并集中化日期操作,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,除了显式指明。

ABP框架 - 时间的更多相关文章

  1. C#高级知识点&(ABP框架理论学习高级篇)——白金版

    前言摘要 很早以前就有要写ABP高级系列教程的计划了,但是迟迟到现在这个高级理论系列才和大家见面.其实这篇博客很早就着手写了,只是楼主一直写写停停.看看下图,就知道这篇博客的生产日期了,谁知它的出厂日 ...

  2. ABP框架实践基础篇之开发UI层

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...

  3. 一步一步使用ABP框架搭建正式项目系列教程之本地化详解

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...

  4. [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序

    本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...

  5. ABP框架详解(七)Caching

    在ABP框架中存在一个缓存机制,使用ICache的继承类来存储最终需要缓存的数据,可以吧ICache看成一个字典对象,使用Key作为真实数据的具有唯一性的表示.使用上与字典对象完全相同,Get方法传递 ...

  6. ABP框架详解(三)Domain

    此处的Domain主要指Abp类库根目录下Domain文件夹.顾名思义该目录下是用来存放与领域实体,领域逻辑执行,存储,领域服务相关的内容. 1.Entities (1)为整个Abp框架后期开发的所有 ...

  7. ABP框架详解(二)AbpKernelModule

    AbpKernelModule类是Abp框架自己的Module,它也跟所有其他的Module一样继承自AbpModule,重写PreInitialize,Initialize,PostInitiali ...

  8. 关于使用ABP框架搭建的项目升级时需要注意的问题汇总

    ABP理论学习总目录 一步一步使用ABP框架搭建正式项目系列教程 ABP之Module-Zero学习目录 本篇目录 说明 升级方法 问题_01:Log4Net导致编译不成功 2015/12/18更新 ...

  9. AutoMapper在ABP框架中的使用说明

    为了说明AutoMapper如何使用,我专门开设了一个专题来讲,如果您还没有查看该专题,请点击这里.既然系统地学习了AutoMapper,那么接下来就是该用它实战的时候了.今天,我们就来揭开AutoM ...

随机推荐

  1. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  2. .Net中的AOP系列之构建一个汽车租赁应用

    返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...

  3. Python高手之路【二】python基本数据类型

    一:数字 int int(整型): 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...

  4. Gradle配置APK自动签名完整流程

    转载请注明出处:http://www.cnblogs.com/LT5505/p/6256683.html 一.生成签名 1.命令行生成签名,输入命令keytool -genkey -v -keysto ...

  5. python学习笔记(python介绍)

    为什么要学python? python和shell的比较,和PHP.和JAVA比较 运维开发只是用到python的很小一部分 python在一些知名公司的应用: 谷歌:python的创始人原来在谷歌工 ...

  6. 根据ip判断返回城市名称查询当地天气

    <?phpheader("content-type:text/html;charset=utf-8");date_default_timezone_set("Asi ...

  7. VS2015墙内创建ionic2 【利用nrm更换源,完美!】

    STEP 1 设置cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org   一句话建立cnpm STEP 2 安装nr ...

  8. Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)

    第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...

  9. 读过MBA的CEO更自私?《哈佛商业评论》2016年第12期。4星

    老牌管理杂志.每期都值得精度.本期我还是给4星. 以下是本书中的一些内容的摘抄: 1:他们发现在Airbnb上,如果客人姓名听起来像黑人,那么比名字像白人的客人的接受率会低16%.#45 2:对立组织 ...

  10. Spring MVC初始化参数绑定

    初始化参数绑定与类型转换很类似,初始化绑定时,主要是参数类型 ---单日期 在处理器类中配置绑定方法  使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型   proper ...