我在前两篇文章里分享了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之夏令时篇相关推荐

  1. 面向全球用户的Teams app之时区篇

    我在前两篇文章里分享了Global Ready的app时会遇到的不同文化的挑战.这篇我继续分享在时区方面的挑战. 时间是最复杂的,最容易出错的部分.时间复杂的最根本原因是时区问题. 首先,大家都知道, ...

  2. 面向全球用户的Teams app之Culture数字篇

    我前几周在微软Ignite the Tour北京大会上,分享了如何开发一款面向全世界用户的Teams App,里面介绍了在开发Global Ready的app时会遇到的各种挑战,反响很好.所以我准备写 ...

  3. 面向全球用户的Teams app之Culture计量单位和禁忌篇

    我在前一篇文章里分享了Global Ready的app时会遇到的不同文化对于数字方面的挑战.这篇我继续分享不同文化对于计量单位和禁忌方面的挑战. 我们先来看一个例子,假如有一个teams bot,它告 ...

  4. 主动给团队或用户安装Teams App

    在写这篇文章的时候,这个新功能还处在 Public Review,这意味着可能(很小的可能性)这里写的方法在正式发布前还会有一些改动. 之前有一些做teams app开发的朋友问过我,能不能主动给一个 ...

  5. 使用Azure Serverless来开发Teams App

    Azure Function可以说比较早期的一个serverless服务,随着这些年云服务的大行其道,Serverless在概念越来越火,什么叫serverless? Serverless compu ...

  6. 使用Azure轻松实现Teams App的全球合规性

    我在之前的一篇博客里面讲了合规性对于我们Teams app是非常重要的,因为office365平台就是面向全世界用户的,我们开发的teams app一旦发布后,立刻就会有各国各地区的用户来进行安装使用 ...

  7. 华为面向全球发布HMS Core 4.0意味着什么?

    作者 | CSDN App ​封图付费下载自图虫 在2020年世界移动通信大会(简称"MWC")宣布取消后,华为迅速调整策略,将原定于在MWC举办的新品发布会,改为线上举行.整个发 ...

  8. Android 9 Pie 现已面向全球正式发布!

    前言 经历一年多的开发和数月以来早期用户的反复测试,最新 Android 平台 -- Android 9 Pie 终于正式面向全球发布! Android 9 利用人工智能技术,让您的手机更加智能.简洁 ...

  9. 2014Esri全球用户大会——亮点系列之产品技术

    2014年Esri全球用户大会已于7月14日~18日隆重召开,让我们一起来回味以下精彩内容: 序:大会主题"Creating Our Future" [解读]:     传达两个核 ...

最新文章

  1. SpringMVC中,前台jsp封装参数,绑定参数,传递参数到后台controller的过程详解
  2. python环境搭建_Python开发环境搭建安装开发软件
  3. 《WF编程》系列之30 - 基本活动:错误处理
  4. python中的迭代器Iterator
  5. CentOS 创建SVN 服务器,并且自动同步到WEB 目录
  6. byte 合并 java_java合并byte
  7. python识别出蓝色_OpenCVPython——无法检测蓝色对象
  8. 转:SVN的Local方式:个人源码管理的好办法
  9. 网站繁简体切换(二)
  10. json与字面量定义对象的区别,请不要混淆,与字符串转换
  11. 函数与导数中常用的函数和不等关系
  12. teamview centos 配置
  13. 多传感器信息融合matlab程序,传感器信息融合:MATLAB程序实现
  14. linux aria2 离线,使用aria2做离线下载
  15. 站队(使用插入排序完成) (Standard IO)————c++插入排序
  16. DOS/WinPE双启动移动硬盘制作详解
  17. java语言实现吃水果问题_Java 面向对象 之 人吃水果
  18. 《Web前端开发技术》笔记
  19. Python实现计算机的自动化控制!
  20. Java实现打印输出菱形

热门文章

  1. Linux中shell概念笔记
  2. C# FTP操作类库
  3. vnpy怎么创建策略并回测_【手把手教你】入门量化回测最强神器backtrader(一)
  4. 写给前端新手看的一些模块化知识
  5. 三年经验前端社招——有赞
  6. 使用uwsgi和gunicorn部署Django项目
  7. 慕课网高并发实战(一)-并发与高并发基本概念
  8. 新手学习Java必需要知道的这些基本概念!
  9. DDD为何叫好不叫座?兼论DCI与业务分析的方法论
  10. ssh 与 locale