次のコードを使用して、年、月、日の変数で指定された日に中部ヨーロッパで夏時間が使用されているかどうかを調べます。私のPC(Ubuntuの16.04)でDebianは夏時間を考慮していませんR
timeString = paste(toString(year), formatC(month, width = 2, flag="0"), formatC(day, width = 2, flag="0"), "12", sep = "-")
time = strptime(timeString, format = "%Y-%m-%d-%H")
diff = as.numeric(as.POSIXct(time, tz="UTC") - as.POSIXct(time, tz="Europe/Prague"))
サマータイムが、1 otherviseアクティブですが、Debianの8.8を使用してサーバー上では、すべての場合において1であるとき、diffは2です。 Ubuntuとして動作するようにサーバーを設定する方法を知っていますか?ありがとう。
アップデート:Debianの時刻設定を変更すると、crontabに使用される時間も変更されるため、これは望ましくありません。数分ごとに動作するRスクリプトをいくつか実行するので、新しい設定でRを再実行するのは危険なようです。あなたは夏時間が使用されているかどうかを確認したい場合は、単に行うことができ、すべての
DaylightSaving = function(year, month, day) {
# years 2010-2030
if (year < 2010 || year > 2030) {
stop("The function is implemented now only for years 2010-2030")
}
dayStart = c(28, 27, 25, 31, 30, 29, 27, 26, 25, 31, 29, 28, 27, 26,
31, 30, 29, 28, 26, 25, 31)
dayEnd = c(31, 30, 28, 27, 26, 25, 30, 29, 28, 27, 25, 31, 30, 29,
27, 26, 25, 31, 29, 28, 27)
if (month < 3 || month > 10) {
return(FALSE)
} else if (month == 3 && day < dayStart[year - 2009]) {
return(FALSE)
} else if (month == 10 && day >= dayEnd[year - 2009]) {
return(FALSE)
}
return(TRUE)
}
あなたは両方のシステムが同じタイムゾーンの設定を持っているかどうかを確認するために時間がかかりました:
unix.stackexchange.comに類似した質問がありますか? –