关于GMT和UTC时间? php 关于时区 date gmdate date_default_timezone_set/get 终极答疑

关于GMT和UTC时间?

GMT+0800
Greenwich: [gri:nitf], 格林威治/格林尼治.是英国伦敦泰晤士河附近的一个小镇
Mean: adj. 自私的; n. 平均..
he is mean about money.
GMT就是格林威治平均/标准时间

什么叫本初子午线?

国外叫 : prime mer’idian.只是在中国内才叫本初-子午线. 只是国内的翻译这样怪怪的.
prime 被国人翻译为本初,
meridian本意是 经线的/全盛的, 顶点的:
he is “at the meridian of ” life.
he was “at the meridian of ” his power then.
而在中国, 子为北方, 午为南方, 子午即南北方向, 所以就把经线 “南北线” 翻译成了子午线.
因此, 子午线只是中国的叫法, 国外没有 “子午” 这种天干地支的说法的.

经纬线都是假想 (imaginary)出来的线, 赤道是天然的纬线.经线从理论上来说, 任何连接南北两极的圆线都可以作为
prime meridian, 比如中国清朝的时候,还提出了自己的prime meridian. 因此, 需要从无数的子午线中 人为
地选出一条作为”首子午线”. 因为英国皇家天文台(Greenwich天文台)最先测量经线的长度, 所以把经过 Greenwich 天文台
子午仪中心的子午线作为经线的起点, 即0度子午线, 本初子午线.

Greenwich Village = the Village不是在英国, 而是在美国纽约.

GMT 又叫 UT0
经过 “地轴摆动”修正后的时间 叫 UT1, UT2
由铯原子钟提供的时间叫 “国际原子时” :TAI
那么, 把以上的所有时间: UT0, 1,2 TAI综合精确计算 提供的 “世界协调时” 就叫 UTC .
UTC与真的太阳时的误差在0.9秒内.否则, 要由巴黎…发布 “闰秒”.
UTC: universal time coordinated.

通常在程序中, php和javascript, jquery中, 就认为GMT和UTC是一样的, 没有区别的.

而CST, 则有 多义/歧义 解释了.
可以是 美国或澳大利亚的 Central Standard Time(中部标准时间)
也可以是 中国或古巴的标准时间: China/Cuba Standard Time
而在不同的语言中, 如php, java, 和 javascript中, 解释器/编译器对CST的理解不同, 而出错.

所以, 在编程中, 尽量少用 CST.

php和js/jquery中对时间/时区的操作?

  • 获得时间的函数:
php是 $dt = time()
js/jq 是 var dt = new Date();

// php中的time()时获得GMT时间戳的秒数. 是两个GMT时间的差 : 是指当前GMT英国Greenwich 0 时区的GMT时间
// 和unix纪元的 时间差.  跟php系统设置的 时区无关!
  • 也就是说, php的time()函数, 在某一时刻, 比如现在这一时刻, 在地球上的任何地方都是相同的. 因为他们都是返回的在伦敦的Greenwich的GMT时间.而不是本地时间, 所以跟php的系统设置时区无关.

  • 对日期/时间的操作
js获得new Date()对象后, 有丰富的成员函数来进行操作, 如getMonth, getDate, getDay, toString,UTC()等等
  • 对php的时间操作, 主要是date和gmdate的格式化问题
echo date("Y-m-d H:i:s"); 
// date() 返回的是: 当前(这一刻 time()函数执行/返回时) GMT标准时间 的"本地化时间" 的自定义格式时间
// date()跟php系统设置的时区有关!
echo gmdate("Y-m-d H:i:s");
// gmdate() 返回的是: 当前(这一刻 time()函数执行/返回时) GMT标准时间  的自定义格式时间
// gmdate() 跟你现在所处的位置无关, 跟php系统设置的时区无关!

也就说, date()和gmdate()的区别, 仅仅在于 处理的时间 是不同的!
  • strtotime(“str”)
strtotime("str"): 返回 string给定时间的 所对应的GMT标准时间的 unix时间戳,
如果当前php系统的设置的时区不是GMT标准时区,则在应用strtotime(string)时,系统会自动把时间
string折算成相应的GMT标准时间, 然后计算这个时间的unix时间戳。跟php系统设置的时区有关

关于时区

地球(地球和太阳在宇宙中的相对位置,和人类历史文化的原因)是自西向东自转,东边比西边先看到太阳,
东边的时间也比西边的早. 东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,
这给人们带来不便.

为了克服时间上的混乱, 1884年 在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,
规定将全球划分为24个时区.它们是中时区(零时区)、东1-12区,西1-12区.
每个时区横跨经度15度,时间正好是1小时.最后的东、西第12区各跨经度7.5度,以东、西经180度为界.
每个时区的中央经线上的时间就是这个时区内统一采用的时间,称为区时.相邻两个时区的时间相差1小时.

例如,我国东8区的时间总比泰国东7区的时间快1小时,而比日本东9区的时间慢1小时.
因此,出国旅行的人,必须随时调整自己的手表,才能和当地时间相一致.
凡向西走,每过一个时区,就要把表向前拨1小时(比如2点拨到1点);凡向东走,每过一个时区,就要把表向后拨1小时
(比如1点拨到2点).

实际上,世界上不少国家和地区都不严格按时区来计算时间.为了在全国范围内采用统一的时间,
一般都把某一个时区的时间作为全国统一采用的时间.
例如,我国把首都北京所在的东8区的时间作为全国统一的时间,称为北京时间.
而实际上, 我国整个面积范围共跨了5个时区.
又例如,英国、法国、荷兰和比利时等国,虽地处中时区,但为了和欧洲大多数国家时间相一致,则采用东1区的时间.

如何设置php中的时区? 两种方法

  1. 如果可以修改服务器, 就在服务器中修改phh.ini文件:
[Date]
; Defines the default timezone used by the date functions
date.timezone = Asia/Shanghai 或者 Asia/Chongqing 或者 PRC
// 注意, 没有北京 Asia/Beijng
// 更注意的是, 如果phi.ini中没有[Date] date.timezone的话, 就要自己手动添加.
  1. 如果没有权限 不能 修改服务器上的php.ini, 就用函数方法
// 一般,最好在初始化 文件中 写
// 或调用时间函数之前, 写
ini_set('date.timezone', 'Asia/Shanghai 或者Asia/Chongqing 或者PRC');
ini_set('date.timezone', 'Etc/GMT-8'); // 后面是 -8 减8 , 这个Etc是linux中的/etc目录吗? 那最好不用?
date_default_timezone_set('Asia/Shanghai 或者Asia/Chongqing 或者PRC');
使用date_default_timezone_get()就可以获得系统 当前设置的 时区.

或者, 不用设置时区, 直接手动调整时间:
在显示/输出时间时, 都统一处理:
不使用date()
统一使用gmdate(), 但是在时间上加上 8*3600 这么多秒 到time()上去!
  1. php 手册上说的: date_default_timezone_set自 PHP 5.1.0 起(此版本日期时间函数被重写了),
string date_default_timezone_get ( void )
本函数返回  "默认时区" ,使用如下“假定”的顺序: 

■用 date_default_timezone_set() 函数设定的时区(如果设定了的话) 

■TZ 环境变量(如果非空) 

■date.timezone 配置选项(如果设定了的话) 

■自己推测(如果操作系统支持) 

■如果以上选择都不成功,则返回 UTC 
string date/gmdate ( string $format [, int $timestamp ] )
返回将整数 timestamp 按照给定的格式字串而产生的字符串。
如果没有给出时间戳则使用 "本地" 当前时间。换句话说,timestamp 是可选的,默认值为 time()。 

如果没有给出时间戳则使用 “本地” 当前时间。换句话说,timestamp 是可选的,默认值为 time()。

<?php
// date_default_timezone_set('Asia/Chongqing');
// ini_set('date.timezone', 'PRC');
// ini_set('date.timezone', 'prc');

$tz = date_default_timezone_get();
echo "默认时区是: $tz";

/* 好像没有设置TZ  (timezone) 这个常量 */
if(defined('TZ')) echo TZ; 
echo "<br />";

echo time();
echo "<br />";
echo gmdate('Y-m-d H:i:s');
echo "<br />";
echo date('Y-m-d H:i:s');

?>

那么time()函数的内部实现, 是不是 通过网络去访问 Greenwich的” 相关时间服务器” 而得到的呢? 好像不是, 因为即使是断了网, 还是能够获得time()函数的值? 应该是通过 操作系统 去实现的??

原文地址

https://www.cnblogs.com/bkylee/p/5260296.html

jQuery图片裁剪插件jQuery-photoClip

一款支持手势的裁图插件插件

由于目前网上很难找到一款支持手势的裁图插件,因此自己动手写了一个。为了快速开发,依赖了很多其他的开源插件。不过目前仅解决需求即可。

依赖插件

  • [jquery.transit.js] 插件 (v1.4 中已经移除了对该插件的依赖)
  • [iscroll-zoom.js] 插件(由于原插件的zoom扩展存在几个bug,所以建议使用demo中提供的iscroll-zoom.js文件,本人已经将这些bug修复)
  • [hammer.js] 插件
  • [lrz.all.bundle.js] 插件

操作说明

在移动设备上双指捏合为缩放,双指旋转可根据旋转方向每次旋转90度

在PC设备上鼠标滚轮为缩放,每次双击则顺时针旋转90度

使用方法及参数配置简介

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<div id="clipArea"></div>
<input type="file" id="file">
<button id="clipBtn">截取</button>
<div id="view"></div>
<script src="js/jquery-2.1.3.min.js"></script>
<script src="js/hammer.min.js"></script>
<script src="js/iscroll-zoom.min.js"></script>
<script src="js/lrz.all.bundle.js"></script>
<script src="js/jquery.photoClip.min.js"></script>
<script>
var clipArea = new bjj.PhotoClip("#clipArea", {
    size: [260, 260], // 截取框的宽和高组成的数组。默认值为[260,260]
    outputSize: [640, 640], // 输出图像的宽和高组成的数组。默认值为[0,0],表示输出图像原始大小
    //outputType: "jpg", // 指定输出图片的类型,可选 "jpg" 和 "png" 两种种类型,默认为 "jpg"
    file: "#file", // 上传图片的<input type="file">控件的选择器或者DOM对象
    view: "#view", // 显示截取后图像的容器的选择器或者DOM对象
    ok: "#clipBtn", // 确认截图按钮的选择器或者DOM对象
    loadStart: function(file) {}, // 开始加载的回调函数。this指向 fileReader 对象,并将正在加载的 file 对象作为参数传入
    loadComplete: function(src) {}, // 加载完成的回调函数。this指向图片对象,并将图片地址作为参数传入
    loadError: function(event) {}, // 加载失败的回调函数。this指向 fileReader 对象,并将错误事件的 event 对象作为参数传入
    clipFinish: function(dataURL) {}, // 裁剪完成的回调函数。this指向图片对象,会将裁剪出的图像数据DataURL作为参数传入
});
</script>

Destroy

1
clipArea.destroy();

phpstorm 2017激活 2018/02/04日测试可用

1. 通过Licence Server 激活PHPStorm 2017.1:

  1. http://www.0-php.com:1017(可用,更新于20170621)2018/02/04测试可用

    http://idea.singee77.com/

    http://idea.lanyus.com/ (已被封杀)

    http://idea.qinxi1992.cn/ (测试时不可以)

2. 本地激活PHPStorm 2017.1(不上网):

  1. 加载文件LocalServer.zip
  2. 解压压缩文件,并选择与您的操作系统的名称的文件
  3. 我们给运行该文件的权限并运行该文件
  4. 选择一个许可证服务器,并在许可证服务器地址:指定地址 http://127.0.0.1:1017/
  5. 按下按钮OK

3. 直接用浏览器打开 http://idea.lanyus.com/

点击页面中的“获得注册码”,然后在注册时切换至Activation Code选项,输入获得的注册码一长串字符串,便可以注册成功了!(推荐用这种方式)

4. 若资金允许,请前往https://www.jetbrains.com/idea/buy/购买正版

实用的loading插件 一个兼容移动端pc以及ie10以上的loading插件

loading

一个兼容移动端pc以及ie10以上的loading插件

演示地址: http://www.daiwei.org/components/loading/

direction

方向,column纵向 row 横向

animateIn

进入类型,这里不需要引用animatecss(因为个人觉得loading效果不需要太花哨,默认fadeInNoTransform,其他设置都不会有动画效果)

title

loading的title名称 为” 则不显示

titleColor

title的文字颜色

name

loading的name名称 这算是唯一标识,重复的name的loading不会再生成,因此每次需要给一个name属性

type

loading显示的样式   是转动的小圆球 origin 还是图片 pic

discription

loading的描述  为” 则不显示

discColor

loading的描述颜色

loadingWidth

默认260 loading的宽度

loadingBg

默认 ‘rgba(0, 0, 0, 0.6)’ loading的背景色

borderRadius

默认12 loading的圆角

loadingMaskBg

默认 transparent loading的遮罩层背景色

zIndex

默认 1000001 loading的层级

圆形旋转的loading样式  (origin)

originDivWidth

默认 60 loading内部圆球区域的宽度

originDivHeight

默认 60 loading内部圆球区域的高度

originWidth

默认 8 小圆球的宽度

originHeight

默认 8 小圆球的高度

originBg

默认’#fefefe’ 小圆球的背景色

smallLoading

默认 false 是否显示更小一点的旋转小球效果

这是图片的样式   (pic)

imgSrc

默认的图片地址

imgDivWidth

默认 80 图片的宽度

imgDivHeight

默认 80 图片的高度

flexCenter

默认false, 是否用flex布局让loading-div垂直水平居中

flexDirection

默认’row’ row column flex的方向 横向 和 纵向

mustRelative

默认false 调用loading的元素是否规定relative

 

https://github.com/IFmiss/loading