问题描述:

  在本地使用as.Date()函数从POSIXct类型中提取date时,出现了日期不一致的错误。导致处理数据时,总是出问题。

  还好被领导发现数据有误,不然这个bug不知道还要潜伏多久。尽管如此,找出这个问题还是花了我很长时间。

  

 原因:

这里的问题在于,当我们用as.POSIXct将形如 "2016-04-15 00:00:37" 的字符转换为POSIXct类型时,默认使用的是本地系统的时区。

如中国的时区是CST,则得到的POSIXct为:"2016-04-15 00:00:37 CST".

但是使用as.Date(POSIXct)提取date时,as.Date()函数默认使用的标准时间是UTC。所以这里就出现了8小时的误差,导致提取出来的日期不一致。

as.Date()函数文档的相关说明:

The as.Date methods accept character strings, factors, logical NA and objects of classes "POSIXlt" and "POSIXct". (The last is converted to days by ignoring the time after midnight in the representation of the time in specified time zone, default UTC.)
(括号里大意是说,用as.Date函数转换POSIXct格式的数据时,默认将POSIXct转为UTC时区后,再取days) as.POSIXct()函数文档的相关说明: System-specific (see time zones), but "" is the current time zone, and "GMT" is UTC (Universal Time, Coordinated). (大意是说,as.POSIXct()时若没有指定tz字段,则函数会使用操作系统所在的时区,""表示当前时区。)

解决方法:

比较合理的方法应该是:根据需要使用tz字段直接指定所用的时区。保证两者时区统一。

不过只是想提取date的话,使用as.Date(format(POSIXct_string, '%Y%m%d'))应该也是可以的

关于时区的概念可参考百度百科:http://baike.baidu.com/view/42936.htm

[R]R下as.Date()函数的坑的更多相关文章

  1. javascript Date 函数的坑

    Javascrip中对日期的解析.格式化简直是混乱不堪,各种的坑,攻城狮们多小心.   1. 不要用 Date("yyyy-mm-dd") 构造函数解析字符串. IE.firefo ...

  2. PHP date函数时间相差8个小时解决办法

    php中date时间相差8个小时的解决办法 作者: PHP中文网|标签:|2016-7-25 08:46 在Windows上,在默认的PHP配置下,date函数返回的时间值和当地时间总是相差8小时,即 ...

  3. Android 如何引用com.android.internal.R目录下的资源

    Android 如何引用com.android.internal.R目录下的资源 项目需求 有一个资源跟系统上的一个资源相同,想要引用它:frameworks/base/core/res/res/dr ...

  4. python 和 R 语言 中的 range() 函数

    1.python 中的 range() 函数生成整数序列,常用于 for 循环的迭代. 示例: 2.R 语言中的 range() 函数返回一个数值向量中的最小值和最大中,常用于求极差. 示例: 按语: ...

  5. 【夯实PHP基础】PHP的date函数

    本文地址 原文地址 提纲: 1. 引言 2. 代码示例 3. 参考资料 1. 引言 今天看到一段代码 $timeNew = date('n月j日', strtotime($oldTime)); 感觉有 ...

  6. PHP date()函数详解

    date (PHP 4, PHP 5) date - 格式化一个本地时间/日期 说明¶ string date ( string $format [, int $timestamp ] ) 返回将整数 ...

  7. PHP date() 函数

    实例 格式化本地日期和时间,并返回格式化的日期字符串: <?php // Prints the dayecho date("l") . "<br>&qu ...

  8. MySql 学习之路-Date函数

    MySQL中重要的内建函数 函数 描述 NOW() 返回当前的日期和时间 NOW() 返回当前的日期和时间. 语法 NOW() -- 实例 -- 下面是 SELECT 语句: SELECT NOW() ...

  9. php Date()函数输出中文年月日时分秒

    当然了,PHP的DATE函数是不可能直接输出中文的年月日的,但可以用下面这种方法自己写一个函数. 代码如下 复制代码 function today(){ date_default_timezone_s ...

随机推荐

  1. iOS - 定制多样式二维码

    二维码/条形码是按照某种特定的几何图形按一定规律在平台(一维/二维方向上)分布的黑白相间的图形纪录符号信息.使用若干个与二进制对应的几何形体来表示文字数值信息.   最常见的二维码功能包括信息获取.网 ...

  2. 【翻译四】java-并发之线程暂停

    Pausing Execution with Sleep Thread.sleep causes the current thread to suspend execution for a speci ...

  3. SQLAlchemy Core插入数据,有好几种方法呢

    看是一次插入一条还是多条, 看是数据表名是变量还是常量, 操作还是很灵活的, 主要看哪种顺手顺眼啦. #coding=utf-8 from datetime import datetime from ...

  4. Sencha Architect 安装与使用

    http://www.sencha.com/products/touch/ Sencha SDK Tools Advanced JavaScript and CSS Project Build Too ...

  5. CI框架获取post和get参数 CodeIgniter

    请参考:CI文档的输入类部分: $this->input->post() $this->input->get() ------------------------------- ...

  6. [CentOS]安装软件:/lib/ld-linux.so.2: bad ELF interpreter解决

    转自:http://blog.csdn.net/wanglei2258/article/details/24961233 [CentOS]安装软件:/lib/ld-linux.so.2: bad EL ...

  7. UML- 模型图介绍

    第一类 用例图 第二类 静态图 类图  对象图  包图第三类 行为图 状态图  活动图第四类 交互图 序列图 协助图第五类 实现图  构件图 部署图 1 用例图:从用户角度描述系统功能,以及每个系统功 ...

  8. bbed的使用--查看数据文件信息 & sid信息

    1.得到文件的块大小和数据块个数 在Linux和Unix上,oracle提供了一个小工具dbfsize用于查看文件块大小 (可以参看[ID:360032.1]How to detect and fix ...

  9. Windows Phone中获取UserAgent

    进入WP8时代后,通过DeviceExtendedProperties获取到的DeviceName不再是手机型号了,这对于需要获得手机型号做一些事情的应用(如新浪微博的小尾巴)来说,影响是比较大的. ...

  10. Chrome书签被篡改之后的恢复

    chrome书签和备份存放的路径:(XXXX为用户名)(AppData文件夹为隐藏文件夹) \Users\XXXX\AppData\Local\Google\Chrome\User Data\Defa ...