无法识别当前时区为'C'

4

大家好,

我正在使用Azure机器学习上的R,并遇到了一些问题。

我想使用R程序计算两个日期之间的差值,例如2014/11/01和2014/11/03。

我在R中使用“strptime”函数来完成此操作,在我的电脑上可以工作,但是当我想在Azure ml上运行相同的代码时,它报错了。

错误信息如下:

[ModuleOutput] 1: In strptime(x, format, tz = tz) :
[ModuleOutput] 
[ModuleOutput]   unable to identify current timezone 'C':
[ModuleOutput] 
[ModuleOutput] please set environment variable 'TZ'
[ModuleOutput] 
[ModuleOutput] 2: In strptime(x, format, tz = tz) : unknown timezone 'localtime'

我认为问题在于Azure ml无法检测时区,但我不确定。

有没有解决这个问题的方法?

提前感谢。


系统支持哪些时区?tz的值是多少? - Roland
你好,感谢您的回复。我不确定Azure会支持哪个时区,因为我只需要计算两个日期之间的差异。最终我找到了我遇到的问题,这是关于Azure会自动检测CSV文件,并将日期字符串视为日期格式。因此,我无法使用原始的R代码显示相同的输出。 - KST
1个回答

0

我想你遇到了一个类似于这篇文章的问题: 如何在Azure ML中为strptime函数定义当前时区,未知时区'localtime'

可能的解决方法是在调用strptime之前使用Sys.setenv(TZ='UTC')。

要使用R语言在Azure Machine Learning上计算两个日期之间的差异,可以使用difftime函数。该函数将两个日期时间对象作为参数,并默认返回以秒为单位的差异。您可以使用units参数指定其他单位,例如天或周。

例如,如果您想计算2014/11/01和2014/11/03之间的差异,则可以使用以下代码:

# Convert strings to date-time objects
date1 <- as.POSIXct("2014/11/01", format = "%Y/%m/%d")
date2 <- as.POSIXct("2014/11/03", format = "%Y/%m/%d")

# Calculate the difference in days
difftime(date2, date1, units = "days")

这将返回2天作为结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接