求助:使用strptime函数时如何保留00:00:00格式的秒数
解决R中strptime显示00:00:00时间被省略的问题
嗨Jim,我来帮你搞定这个时间显示的小问题~
你遇到的情况其实是R对POSIXlt/POSIXct时间对象的默认打印规则导致的:当时间部分是00:00:00时,R会自动省略这部分内容,但其实你的datetime对象里是完整包含时分秒信息的,只是没显示出来而已。
要强制让时间部分完整显示,你可以用format()函数来指定输出格式,而不是直接打印时间对象。具体操作如下:
示例代码
# 构造你的日期和时间变量 Date <- '2018-10-10' Time <- '00:00:00' # 生成时间对象 datetime <- strptime(paste(Date, Time), format = "%Y-%m-%d %H:%M:%S", tz = 'GMT') # 用format函数指定完整格式输出 format(datetime, "%Y-%m-%d %H:%M:%S %Z")
执行后你会得到期望的输出:
[1] "2018-10-10 00:00:00 GMT"
如果Time是00:00:01,同样用这个方法也能正常显示完整时间:
Time <- '00:00:01' datetime <- strptime(paste(Date, Time), format = "%Y-%m-%d %H:%M:%S", tz = 'GMT') format(datetime, "%Y-%m-%d %H:%M:%S %Z")
[1] "2018-10-10 00:00:01 GMT"
额外验证:时间信息其实没丢失
如果你想确认datetime对象里确实包含了00:00:00的信息,可以用str()或者unlist()查看内部结构:
str(datetime) # 输出会显示 sec=0, min=0, hour=0 等信息 unlist(datetime) # 能看到各个时间组件的具体数值
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

