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,除了显式指明。
ABP框架 - 时间的更多相关文章
- C#高级知识点&(ABP框架理论学习高级篇)——白金版
前言摘要 很早以前就有要写ABP高级系列教程的计划了,但是迟迟到现在这个高级理论系列才和大家见面.其实这篇博客很早就着手写了,只是楼主一直写写停停.看看下图,就知道这篇博客的生产日期了,谁知它的出厂日 ...
- ABP框架实践基础篇之开发UI层
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...
- 一步一步使用ABP框架搭建正式项目系列教程之本地化详解
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...
- [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序
本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...
- ABP框架详解(七)Caching
在ABP框架中存在一个缓存机制,使用ICache的继承类来存储最终需要缓存的数据,可以吧ICache看成一个字典对象,使用Key作为真实数据的具有唯一性的表示.使用上与字典对象完全相同,Get方法传递 ...
- ABP框架详解(三)Domain
此处的Domain主要指Abp类库根目录下Domain文件夹.顾名思义该目录下是用来存放与领域实体,领域逻辑执行,存储,领域服务相关的内容. 1.Entities (1)为整个Abp框架后期开发的所有 ...
- ABP框架详解(二)AbpKernelModule
AbpKernelModule类是Abp框架自己的Module,它也跟所有其他的Module一样继承自AbpModule,重写PreInitialize,Initialize,PostInitiali ...
- 关于使用ABP框架搭建的项目升级时需要注意的问题汇总
ABP理论学习总目录 一步一步使用ABP框架搭建正式项目系列教程 ABP之Module-Zero学习目录 本篇目录 说明 升级方法 问题_01:Log4Net导致编译不成功 2015/12/18更新 ...
- AutoMapper在ABP框架中的使用说明
为了说明AutoMapper如何使用,我专门开设了一个专题来讲,如果您还没有查看该专题,请点击这里.既然系统地学习了AutoMapper,那么接下来就是该用它实战的时候了.今天,我们就来揭开AutoM ...
随机推荐
- 使用Monit监控本地进程
目前用它监控某些服务,失败自动重启,同时监控特定的日志文件,如果有变化,就发邮件报警 安装不细写了,网上好多 我先用cat /proc/version看了下我的系统是el6的,于是wget http: ...
- JavaScript 自定义对象
在Js中,除了Array.Date.Number等内置对象外,开发者可以通过Js代码创建自己的对象. 目录 1. 对象特性:描述对象的特性 2. 创建对象方式:对象直接量.new 构造函数.Objec ...
- WPF做12306验证码点击效果
一.效果 和12306是一样的,运行一张图上点击多个位置,横线以上和左边框还有有边框位置不允许点击,点击按钮输出坐标集合,也就是12306登陆的时候,需要向后台传递的参数. 二.实现思路 1.获取验证 ...
- JavaScript之职责链模式
一.概述 职责链模式(Chain of responsibility),就是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有 ...
- 从啥也不会到可以胜任最基本的JavaWeb工作,推荐给新人的学习路线(二)
在上一节中,主要阐述了JavaScript方面的学习路线.先列举一下我朋友的经历,他去过培训机构,说是4个月后月薪过万,虽然他现在还未达到这个指标. 培训机构一般的套路是这样:先教JavaSE,什么都 ...
- 深入理解javascript的getTime方法
1.理解getTime getTime() 方法返回一个时间的格林威治时间数值. 可以使用这个方法把一个日期时间赋值给另一个Date 对象. 语法: dateObj.getTime() 参数: 无. ...
- python 数据类型 ----字典
字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values 字典由一对key:value 组成的 python中常用且重量级的数据类型 1. ...
- 手机web如何实现多平台分享
话说App一般都带有分享到社交平台的入口,web网页的分享也有很不错的框架,但是随着HTML5的不断发展,手机web页面越来越多的进入到我们的生活中,那如何在我们的手机上完成分享呢?话说各大分享平台都 ...
- 2016/12/28_javascript
今天学习的主要内容: javascript: 1.if语句,switch语句,while循环以及for循环: 1)if语句 if(boolean){}; if(boolean){} else if(b ...
- Android 微信第三方登录(个人笔记)
今天在写微信登录,花了半天时间搞定.然后写下自己的笔记,希望帮助更多的人...欢迎各位指教. 微信授权登录,官方说的不是很清楚.所以导致有一部分的坑. 微信注册应用平台的应用签名,下载 微信签名生成工 ...