수색…


소개

R에는 날짜, 날짜 및 시간 차이에 대한 수업이 제공됩니다. ?Dates ", " ?DateTimeClasses ", " ?difftime "을 참조하고 추가 문서는 해당 문서의 "참조"섹션을 참조하십시오. 관련 문서 : 날짜날짜 - 시간 클래스 .

비고

수업

  • POSIXct

    date-time 클래스 POSIXct는 1970-01-01 00:00:00 UTC 에 UNIX epoch 이후 시간을 초 단위로 저장합니다. Sys.Time() 사용하여 현재 시간을 Sys.Time() 때 반환되는 형식입니다.

  • POSIXlt

    날짜, 시간 클래스로 일, 월, 년,시, 분, 초 등의 목록을 저장합니다. 이것은 strptime 의해 리턴 된 형식입니다.

  • Date 유일한 날짜 클래스는 날짜를 부동 소수점 숫자로 저장합니다.

날짜 / 시간 형식 선택

POSIXct는 tidyverse와 UNIX 세계에서 유일한 옵션입니다. 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
  • 빠른 시간
  • 윤활제
  • 나노 시간

현재 날짜 및 시간

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"

OlsonNames() 를 사용하여 현재 시스템의 Olson / IANA 데이터베이스에서 표준 시간대 이름을 봅니다.

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)
}

날짜가 달의 마지막 날을 가리키는 경우 날짜의 월 부분을 일관되게 이동하고 날짜를 조정합니다.

예 :

1 개월 전 :

> moveNumOfMonths("2017-10-30",-1)
[1] "2017-09-30"

2 개월 전 :

> moveNumOfMonths("2017-10-30",-2)
[1] "2017-08-30"

2 개월 전진 :

> moveNumOfMonths("2017-02-28", 2)
[1] "2017-04-30"

그것은 2 월 마지막 날부터 2 개월, 즉 4 월 마지막 날로 이동합니다.

다음 달의 마지막 날인 경우 앞뒤로 작동하는 방법을 살펴 보겠습니다.

> moveNumOfMonths("2016-11-30", 2)
[1] "2017-01-31"
> moveNumOfMonths("2017-01-31", -2)
[1] "2016-11-30"

11 월에는 30 일이 있기 때문에 이전 작업에서 동일한 날짜가 표시되지만 다음과 같습니다.

> moveNumOfMonths("2017-01-30", -2)
[1] "2016-11-30"
> moveNumOfMonths("2016-11-30", 2)
[1] "2017-01-31"

1 월에는 31 일이 있기 때문에 11 월 마지막 날로부터 2 개월이 지난 날은 1 월 마지막 날이됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow