4

hereの関数を使用して日の出と日の入りを計算すると、次のように返されます。

         sunrise           sunset
6.49055593325792 18.2873900837081

私はそれをリアルタイムに変換するのに苦労しています(または関数strftimeを試しています)が、これまでのところ成功していません。POSIXctas.Date

いつものように、どんな提案も大歓迎です。

4

3 に答える 3

16

@Arunの戦略は機能しますが、次のようにする方が簡単かもしれません:

x <- c(6.49055593325792, 18.2873900837081)
today<-as.POSIXct('2012-01-23 00:00:00 EST')
today + (3600*x)

# "2012-01-23 06:29:26 EST" "2012-01-23 18:17:14 EST"

それはあなたにも秒を取得します。

于 2013-01-23T16:07:16.250 に答える
7

最初に10進数表現を時間と分に変換します(私がそれを正しく理解していれば)

x <- c(6.49055593325792, 18.2873900837081)
# if 6.49 equals 6.49 hours, then do this.
x.m <- paste(floor(x), round((x-floor(x))*60), sep=":")

> x.m
# [1] "6:29"  "18:17"

> strptime(x.m, format="%H:%M")    
# [1] "2013-01-23 06:29:00" "2013-01-23 18:17:00"
于 2013-01-23T15:58:34.250 に答える
2

これは、変換後にこの「リアルタイム」で何をしたいかによって異なりますが、読みやすくするために使用している [suncalc] 関数からフォーマットされた出力が必要であるという前提で操作します。

時刻を 24 時間 / 12 時間形式で文字列として表示するだけの場合は、[suncalc] 関数の末尾の 'return' ステートメントの直前に、これらの行のペアのいずれかを追加できます。

# Use these two lines for 24-hour format
sunrise <- format(as.POSIXct(sunrise*3600, origin="2001-01-01", "GMT"), "%H:%M")
sunset <- format(as.POSIXct(sunset*3600, origin="2001-01-01", "GMT"), "%H:%M")

# Use these two lines for 12-hour format (AM/PM)
sunrise <- format(as.POSIXct(sunrise*3600, origin="2001-01-01", "GMT"), "%I:%M %p")
sunset <- format(as.POSIXct(sunset*3600, origin="2001-01-01", "GMT"), "%I:%M %p")
于 2013-01-23T19:36:01.253 に答える