面向全球用户的Teams app之夏令时篇
我在前两篇文章里分享了Global Ready的teams app时会遇到的不同挑战。这篇我继续分享在夏令时方面的挑战。
夏令时,主要是为了节约能源,英文里通常缩写成DST(Daylight Saving Time)。一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的国家具体规定不同。目前全世界有近110个国家每年要实行夏令时。
当然夏令时也有一些弊端:
- 对低纬度地区,夏令时作用不大。尤其这些地方在夏天十分湿热,夜晚降临时闷热无法入眠,而清晨正是睡眠的好时间。
- 当夏令时开始和结束时,人们必须将所有计时仪器调快或调慢;当夏令时结束时,某些时间会在当天出现两次,这些都容易构成混乱。并且影响航班的时间。
- 夏令时违背了设定时区的原意──尽量使中午贴近太阳上中天的时间。
我们以下图为例,这个是澳大利亚的时间,一般情况下,分为三个时区,分别是加8,加9小时半,加10小时,但是在夏令时,下面几个州会将时间调整为加10个半小时,和加11个小时。所以整个澳大利亚变成了有5个不同时间。
哪些国家,哪些区域有夏令时?这些没有什么规则,因为这个完全是有不同的国家,州自行规定的。我们teams app里是需要去查表的,和时区划分一样,没有什么简单的规则。
我们国家之前也有过夏令时,在1986年至1991年,具体开始和结束日期分别是:
- 1986年5月4日至9月14日
- 1987年4月12日至9月13日
- 1988年4月10日至9月11日
- 1989年4月16日至9月17日
- 1990年4月15日至9月16日
- 1991年4月14日至9月15日
大家可以看到每年的开始和结束时间都不同。所以我们在开发teams app的时候不要自己尝试的去判断夏令时,建议使用成熟的library,不要重复造轮子,目前任何一门热门的编程语言,都有很成熟的用于时间日期的库或者SDK。我们学习如何使用就好。
另外需要和大家说一点,teams里目前发送给我们app的内容里,没有包含夏令时信息,如下:
{"name": "composeExtension/fetchTask","type": "invoke","timestamp": "2019-06-17T14:32:04.956Z","localTimestamp": "2019-06-18T00:32:04.956+10:00","id": "f:1361493733941541435","channelId": "msteams","serviceUrl": "https://smba.trafficmanager.net/apac/","locale": "en-US",...
}
timestamp和localTimestamp两个字段,通过这两个字段,我们可以获取用户当前的UTC时间和用户所在地的本地时间。比如上面这个json表明了,用户在这个本地时间是在加10的时区。但是,并没有告诉我们app用户所在的时区和是否正在经历夏令时,这个+10,可能是在+10时区,也可能是+9时区,但是正在经历夏令时,所以+10小时。
如果大家对Teams app开发感兴趣,强烈推荐中国微软的牛人Ares陈老师最近出了一套的Teams开发系列视频讲座:Microsoft Teams开发入门和实践 https://aka.ms/teamsdev163study ,从入门到精通Teams开发,对于准备从事或者正在从事Teams app开发的同学来说,必看!
面向全球用户的Teams app之夏令时篇相关推荐
- 面向全球用户的Teams app之时区篇
我在前两篇文章里分享了Global Ready的app时会遇到的不同文化的挑战.这篇我继续分享在时区方面的挑战. 时间是最复杂的,最容易出错的部分.时间复杂的最根本原因是时区问题. 首先,大家都知道, ...
- 面向全球用户的Teams app之Culture数字篇
我前几周在微软Ignite the Tour北京大会上,分享了如何开发一款面向全世界用户的Teams App,里面介绍了在开发Global Ready的app时会遇到的各种挑战,反响很好.所以我准备写 ...
- 面向全球用户的Teams app之Culture计量单位和禁忌篇
我在前一篇文章里分享了Global Ready的app时会遇到的不同文化对于数字方面的挑战.这篇我继续分享不同文化对于计量单位和禁忌方面的挑战. 我们先来看一个例子,假如有一个teams bot,它告 ...
- 主动给团队或用户安装Teams App
在写这篇文章的时候,这个新功能还处在 Public Review,这意味着可能(很小的可能性)这里写的方法在正式发布前还会有一些改动. 之前有一些做teams app开发的朋友问过我,能不能主动给一个 ...
- 使用Azure Serverless来开发Teams App
Azure Function可以说比较早期的一个serverless服务,随着这些年云服务的大行其道,Serverless在概念越来越火,什么叫serverless? Serverless compu ...
- 使用Azure轻松实现Teams App的全球合规性
我在之前的一篇博客里面讲了合规性对于我们Teams app是非常重要的,因为office365平台就是面向全世界用户的,我们开发的teams app一旦发布后,立刻就会有各国各地区的用户来进行安装使用 ...
- 华为面向全球发布HMS Core 4.0意味着什么?
作者 | CSDN App 封图付费下载自图虫 在2020年世界移动通信大会(简称"MWC")宣布取消后,华为迅速调整策略,将原定于在MWC举办的新品发布会,改为线上举行.整个发 ...
- Android 9 Pie 现已面向全球正式发布!
前言 经历一年多的开发和数月以来早期用户的反复测试,最新 Android 平台 -- Android 9 Pie 终于正式面向全球发布! Android 9 利用人工智能技术,让您的手机更加智能.简洁 ...
- 2014Esri全球用户大会——亮点系列之产品技术
2014年Esri全球用户大会已于7月14日~18日隆重召开,让我们一起来回味以下精彩内容: 序:大会主题"Creating Our Future" [解读]: 传达两个核 ...
最新文章
- SpringMVC中,前台jsp封装参数,绑定参数,传递参数到后台controller的过程详解
- python环境搭建_Python开发环境搭建安装开发软件
- 《WF编程》系列之30 - 基本活动:错误处理
- python中的迭代器Iterator
- CentOS 创建SVN 服务器,并且自动同步到WEB 目录
- byte 合并 java_java合并byte
- python识别出蓝色_OpenCVPython——无法检测蓝色对象
- 转:SVN的Local方式:个人源码管理的好办法
- 网站繁简体切换(二)
- json与字面量定义对象的区别,请不要混淆,与字符串转换
- 函数与导数中常用的函数和不等关系
- teamview centos 配置
- 多传感器信息融合matlab程序,传感器信息融合:MATLAB程序实现
- linux aria2 离线,使用aria2做离线下载
- 站队(使用插入排序完成) (Standard IO)————c++插入排序
- DOS/WinPE双启动移动硬盘制作详解
- java语言实现吃水果问题_Java 面向对象 之 人吃水果
- 《Web前端开发技术》笔记
- Python实现计算机的自动化控制!
- Java实现打印输出菱形