第十九章:UTC time和local time的互换
通常我们服务器端的时间使用UTC格式,避免服务器的时区对最终的时间产生影响。而客户端需要根据具体的时区显示local time,本文将介绍如何将服务器的UTC time(基于asp.net web api实现的web service)与客户端的local time(基于ionic实现的hybrid app)进行相互转换。
1. Convert UTC time to local time
应用场景:通常在请求结束之后,把服务器的数据转换成本地数据。
在service中定义filter,需要传入连个参数:utc格式的时间字符串和转换格式。
.filter('utcToLocal', function utcToLocal($filter) {
return function (utcDateString, format) {
if (!utcDateString) {
return;
}
if (utcDateString.indexOf('Z') === -1 && utcDateString.indexOf('+') === -1) {
utcDateString += 'Z';
}
return $filter('date')(utcDateString, format);
};
})
在页面中使用filter:
<p>{{item.triggeredTimeString|utcToLocal:"yyyy-MM-dd HH:mm:ss"}}</p>
如何在directives中使用呢?需要重新定义utcToLocal函数,调用如下。注意:需要在根指令处声明$filter。
var utcToLocal = function(utcDateString) {
if (!utcDateString) {
return;
}
if (utcDateString.indexOf('Z') === -1 && utcDateString.indexOf('+') === -1) {
utcDateString += 'Z';
}
return $filter('date')(utcDateString, "yyyy-MM-dd HH:mm:ss");
}
$filter('date')(utcDateString, "yyyy-MM-dd HH:mm:ss");
2. Convert local time to UTC time
应用场景:通常调用服务发送数据时使用。
2.1 定义一个函数,使用UTC Date的构造函数来生成UTC时间。
var toUTCDate = function(date){
var _utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
return _utc;
};
var localTime = new Date();
var utcTime = toUTCDate(localTime);
$log.info(localTime);
$log.info(utcTime);
2.2 直接使用库函数toUTCString:
var localTime = new Date();
var utc = localTime.toUTCString();
2.3 使用Moment.js:
var localTime = new Date();
moment.utc(localTime);
2.4 扩展库函数,封装addDays和convertToUtcString:
Date.prototype.convertToUtcString = function() {
return (this.getUTCMonth()+1) + "-" + this.getUTCDate() + "-" + this.getUTCFullYear() + " " + this.getUTCHours() + ":" + this.getUTCMinutes() + ":" + this.getUTCSeconds();
}
Date.prototype.convertToLocalString = function() {
return (this.getMonth()+1) + "-" + this.getDate() + "-" + this.getFullYear() + " " + this.getHours() + ":" + this.getMinutes() + ":" + this.getSeconds();
}
Date.prototype.getYtdUtcString = function() {
return "1-1-" + this.getFullYear() + " 12:00:00";
}
Date.prototype.addDays = function(num) {
var value = this.valueOf();
value += 86400000 * num;
return new Date(value);
}
参考资料:
http://stackoverflow.com/questions/31778624/converting-local-time-into-utc-time-in-angularjs
https://github.com/urish/angular-moment
http://stackoverflow.com/questions/31785364/converting-date-from-local-time-zone-to-utc-and-then-to-local
第十九章:UTC time和local time的互换的更多相关文章
- Python之路【第十九章】:Django进阶
Django路由规则 1.基于正则的URL 在templates目录下创建index.html.detail.html文件 <!DOCTYPE html> <html lang=&q ...
- 【C++】《C++ Primer 》第十九章
第十九章 特殊工具与技术 一.控制内存分配 1. 重载new和delete new表达式的工作机理: string *sp = new string("a value"); //分 ...
- 第十九章——使用资源调控器管理资源(1)——使用SQLServer Management Studio 配置资源调控器
原文:第十九章--使用资源调控器管理资源(1)--使用SQLServer Management Studio 配置资源调控器 本系列包含: 1. 使用SQLServer Management Stud ...
- 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器
原文:第十九章--使用资源调控器管理资源(2)--使用T-SQL配置资源调控器 前言: 在前一章已经演示了如何使用SSMS来配置资源调控器.但是作为DBA,总有需要写脚本的时候,因为它可以重用及扩展. ...
- 第十九章 Django的ORM映射机制
第十九章 Django的ORM映射机制 第一课 Django获取多个数据以及文件上传 1.获取多选的结果(checkbox,select/option)时: req.POST.getlist('fav ...
- Gradle 1.12用户指南翻译——第四十九章. Build Dashboard 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12翻译——第十九章. Gradle 守护进程
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
- Gradle 1.12用户指南翻译——第二十九章. Checkstyle 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第三十九章. IDEA 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- “全栈2019”Java多线程第二十九章:可重入锁与不可重入锁详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
随机推荐
- db2 中 SQL判断物理表是否存在、修改表名
1.db2 中 SQL判断物理表是否存在 SELECT * FROM SYSIBM.SYSTABLES WHERE TID <> 0 AND Name = 'TABLE_NAME' AND ...
- C# 筛选Datatable、foreach填充DGV,datatable与datarows转换
public void SelectFG1(string Nane) { string SetText = "卫材代码 like '%" + Nane + "%' or ...
- 使用C#代码发送邮件,不完整的demo
作为一只入行不久的小菜鸟,最近接触到利用C#代码发送邮件,做了一点小的demo练习.首先,需要配置,这边我做的是QQ邮箱的相关的练习,练习之前,首先应该解决的问题肯定是关于服务器的配置,这边偷一个懒, ...
- 【BZOJ2839】集合计数 容斥原理+组合数
Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007 ...
- 洛谷P2510 [HAOI2008]下落的圆盘(计算几何)
题面 传送门 题解 对于每个圆,我们单独计算它被覆盖的周长是多少 只有相交的情况需要考虑,我们需要知道相交的那段圆弧的角度,发现其中一个交点和两个圆的圆心可以构成一个三角形且三边都已经知道了,那么我们 ...
- 微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
http://skaka.me/blog/2016/04/21/springcloud1/ 不同于单一架构应用(Monolith), 分布式环境下, 进行事务操作将变得困难, 因为分布式环境通常会有多 ...
- uC/OS-II 一些函数简介
获得更多资料欢迎进入我的网站或者 csdn或者博客园 以前搞硬件的经验,最近突然翻出来了.分享给大家:主要讲解uC/OS-II常用函数:虽说现在转行软件了,但是感觉之前搞硬件的经验还真是很有用对于理解 ...
- python创建virtualenv虚拟环境
pip install virtualenv virtualenv env_py36_crawl env_py36_crawl\Scripts\activate deactivate pip free ...
- postgreSQL PL/SQL编程学习笔记(五)——触发器(Triggers)
Trigger Procedures PL/pgSQL can be used to define trigger procedures on data changes or database eve ...
- Python博文列表
手把手|100行Python代码自动抢火车票!(包教包会):https://zhuanlan.zhihu.com/p/32928355 最全中华古诗词数据库, :https://github.com/ ...