R Language
दिनांक और समय
खोज…
परिचय
आर तारीखों, तारीखों और समय के अंतर के लिए कक्षाओं के साथ आता है; देखें; ?Dates
; ?Dates
?DateTimeClasses
?difftime
और आगे के प्रलेखन के लिए उन डॉक्स के "See Also" अनुभाग का पालन करें। संबंधित डॉक्स: दिनांक और दिनांक-समय कक्षाएं ।
टिप्पणियों
कक्षाएं
1970-01-01
1970-01-01 00:00:00 UTC
पर UNIX युग के बाद से एक दिनांक-समय वर्ग, POSIXct सेकंड के रूप में समय संग्रहीत करता है। यहSys.Time()
साथ वर्तमान समय कोSys.Time()
समय दिया गया प्रारूप है।एक तिथि-समय वर्ग, दिन, महीने, वर्ष, घंटे, मिनट, दूसरे, और इसी तरह की एक सूची संग्रहीत करता है। यह वह प्रारूप है जिसे
strptime
द्वारा लौटाया जाता है।दिनांक केवल दिनांक वर्ग, दिनांक को फ़्लोटिंग-पॉइंट संख्या के रूप में संग्रहीत करता है।
दिनांक-समय प्रारूप का चयन करना
POSIXct यूनिक्स के tidyverse और दुनिया में एकमात्र विकल्प है। यह तेज़ है और POSIXlt की तुलना में कम मेमोरी लेता है।
origin = as.POSIXct("1970-01-01 00:00:00", format ="%Y-%m-%d %H:%M:%S", tz = "UTC")
origin
## [1] "1970-01-01 UTC"
origin + 47
## [1] "1970-01-01 00:00:47 UTC"
as.numeric(origin) # At epoch
## 0
as.numeric(Sys.time()) # Right now (output as of July 21, 2016 at 11:47:37 EDT)
## 1469116057
posixlt = as.POSIXlt(Sys.time(), format ="%Y-%m-%d %H:%M:%S", tz = "America/Chicago")
# Conversion to POISXct
posixct = as.POSIXct(posixlt)
posixct
# Accessing components
posixlt$sec # Seconds 0-61
posixlt$min # Minutes 0-59
posixlt$hour # Hour 0-23
posixlt$mday # Day of the Month 1-31
posixlt$mon # Months after the first of the year 0-11
posixlt$year # Years since 1900.
ct = as.POSIXct("2015-05-25")
lt = as.POSIXlt("2015-05-25")
object.size(ct)
# 520 bytes
object.size(lt)
# 1816 bytes
विशेष पैकेज
- किसी भी समय
- data.table IDate और ITime
- जल्दी वक़्त
- lubridate
- nanotime
वर्तमान तिथि और समय
R वर्तमान दिनांक, समय और समय क्षेत्र तक पहुँचने में सक्षम है:
Sys.Date() # Returns date as a Date object
## [1] "2016-07-21"
Sys.time() # Returns date & time at current locale as a POSIXct object
## [1] "2016-07-21 10:04:39 CDT"
as.numeric(Sys.time()) # Seconds from UNIX Epoch (1970-01-01 00:00:00 UTC)
## [1] 1469113479
Sys.timezone() # Time zone at current location
## [1] "Australia/Melbourne"
वर्तमान सिस्टम पर ओल्सन / IANA डेटाबेस में समय क्षेत्र के नाम देखने के लिए OlsonNames()
का उपयोग करें:
str(OlsonNames())
## chr [1:589] "Africa/Abidjan" "Africa/Accra" "Africa/Addis_Ababa" "Africa/Algiers" "Africa/Asmara" "Africa/Asmera" "Africa/Bamako" ...
महीने के अंत में जाएं
मान लें कि हम महीने के अंतिम दिन जाना चाहते हैं, यह समारोह इस पर मदद करेगा:
eom <- function(x, p=as.POSIXlt(x)) as.Date(modifyList(p, list(mon=p$mon + 1, mday=0)))
परीक्षा:
x <- seq(as.POSIXct("2000-12-10"),as.POSIXct("2001-05-10"),by="months")
> data.frame(before=x,after=eom(x))
before after
1 2000-12-10 2000-12-31
2 2001-01-10 2001-01-31
3 2001-02-10 2001-02-28
4 2001-03-10 2001-03-31
5 2001-04-10 2001-04-30
6 2001-05-10 2001-05-31
>
स्ट्रिंग प्रारूप में दिनांक का उपयोग करना:
> eom('2000-01-01')
[1] "2000-01-31"
महीने के पहले दिन पर जाएं
मान लें कि हम दिए गए महीने के पहले दिन जाना चाहते हैं:
date <- as.Date("2017-01-20")
> as.POSIXlt(cut(date, "month"))
[1] "2017-01-01 EST"
महीनों से लगातार कई महीनों की तारीख आगे बढ़ाएं
चलो कहते हैं कि हम किसी निश्चित तिथि एक ले जाना चाहते हैं num
महीने की। हम निम्नलिखित फ़ंक्शन को परिभाषित कर सकते हैं, जो mondate
पैकेज का उपयोग करता है:
moveNumOfMonths <- function(date, num) {
as.Date(mondate(date) + num)
}
यह तारीख के महीने के हिस्से को लगातार बदलता रहता है और दिन को समायोजित करता है, अगर तारीख महीने के अंतिम दिन को संदर्भित करती है।
उदाहरण के लिए:
वापस एक महीने:
> moveNumOfMonths("2017-10-30",-1)
[1] "2017-09-30"
वापस दो महीने:
> moveNumOfMonths("2017-10-30",-2)
[1] "2017-08-30"
आगे दो महीने:
> moveNumOfMonths("2017-02-28", 2)
[1] "2017-04-30"
यह फरवरी के आखिरी दिन से दो महीने चलता है, इसलिए अप्रैल का आखिरी दिन होता है।
आइए देखें कि यह महीने के आखिरी दिन में पिछड़े और आगे के कार्यों के लिए कैसे काम करता है:
> moveNumOfMonths("2016-11-30", 2)
[1] "2017-01-31"
> moveNumOfMonths("2017-01-31", -2)
[1] "2016-11-30"
क्योंकि नवंबर में 30 दिन हैं, हमें पिछड़े ऑपरेशन में एक ही तारीख मिलती है, लेकिन:
> moveNumOfMonths("2017-01-30", -2)
[1] "2016-11-30"
> moveNumOfMonths("2016-11-30", 2)
[1] "2017-01-31"
क्योंकि जनवरी के 31 दिन हैं, तो नवंबर के आखिरी दिन से दो महीने आगे बढ़ने पर जनवरी का आखिरी दिन मिलेगा।