Страница 1 из 1

Изменение формата даты!

Добавлено: 17 окт 2016, 16:58
garrik_igorek
Добрый день, помогите пожалуйста со следующей проблемой.

В csv есть даты в следующем формате "2016-07-16 03:49:48.000" , а нужно в таком "2016-07-16T00:00:00Z" , НО только что бы еще и секунды выводил.

Всё это дело делаю в Azure ml studio, там написал следующий скрипт:

Код: Выделить всё

timeformat <- "%Y-%m-%d"

data$BegDate <- as.POSIXct(as.numeric(as.POSIXct(data$BegDate, format = timeformat, tz = "UTC", origin = "1970-01-01"), tz = "UTC"), tz = "UTC", origin = "1970-01-01")
Он делает из такой даты "2016-07-16 03:49:48.000" такую "2016-07-16T00:00:00Z" опуская при этом часы, минуты и секунды, а их нужно оставить.

Помогите пожалуйста).

Re: Изменение формата даты!

Добавлено: 18 окт 2016, 11:02
freeExec
Так может timeformat надо расширить до %h:%m:%s

Re: Изменение формата даты!

Добавлено: 18 окт 2016, 14:04
garrik_igorek
пробовал с таким форматом

Код: Выделить всё

"%Y-%m-%d %h:%m:%s"
не работает так

Re: Изменение формата даты!

Добавлено: 18 окт 2016, 15:09
nickleb
Не знаю как в Azure, но в R попробовал и вот так многострочно, но наверняка:

Код: Выделить всё

dt <- as.character("2016-07-16 03:49:48.000")

YYYYdt <- substr(dt, 1, 4)
MMdt   <- substr(dt, 6, 7)
DDdt   <- substr(dt, 9, 10)

HHdt <- substr(dt, 12, 13)
mmdt <- substr(dt, 15, 16)
SSdt <- substr(dt, 18, 19)

#ISOdatetime
dtISO <- ISOdatetime(YYYYdt, MMdt, DDdt, HHdt, mmdt, SSdt, "GMT")
dtISO

#string dtISO
stringdtISO <- paste(YYYYdt, "-" , MMdt, "-", DDdt, "T", HHdt, ":", mmdt, ":", SSdt, "Z", sep="")
stringdtISO

Re: Изменение формата даты!

Добавлено: 18 окт 2016, 15:47
nickleb
... или же так:

Код: Выделить всё

dt <- as.character("2016-07-16 03:49:48.000")
dtString <- gsub(" ", "T", dt)
dtString <- gsub(substr(dtString, 
                        nchar(dtString)-3, 
                        nchar(dtString)), 
                 "Z", dtString)
dtString 
... вариантов - море...

Re: Изменение формата даты!

Добавлено: 18 окт 2016, 16:24
garrik_igorek
Предпоследний вариант отработал как надо, но почему то не поставил тип для столбца "Feature Type: DateTime Feature", а сделал его "Feature Type: Object Feature"

Re: Изменение формата даты!

Добавлено: 18 окт 2016, 20:25
nickleb
... ещё один вариант в R:

Код: Выделить всё

dt <- as.character("2016-07-16 03:49:48.000")
dtformat = "%Y-%m-%dT%H:%M:%SZ"
dtNewFormat <- strftime(dt, format=dtformat, tz="")
dtNewFormat

Re: Изменение формата даты!

Добавлено: 19 окт 2016, 08:41
garrik_igorek
вот такая ошибка у меня в скрипте

character string is not in a standard unambiguous format


вот сам скрипт

Код: Выделить всё

colnames(data) <- c("Id", "DeviceTypeId", "DeviceId", "EventTypeId", "BegDate","EndDate", "Duration", "Tag", "MobileZoneId", "StaticZoneId", "DateCreation", "Src", "IsLoaded","DataDate", "Latitude", "Longitude", "IsSplited", "BaseEventId"); 

dt <- as.character(data$BegDate)
dtformat = "%Y-%m-%dT%H:%M:%SZ"
data$BegDate1 <- strftime(dt, format=dtformat, tz="")

Re: Изменение формата даты!

Добавлено: 19 окт 2016, 10:11
nickleb
в R нижеследующий фрагмент проходит без ошибок и предупреждений:

Код: Выделить всё

data <- data.frame (c(1,2,3), c("2016-07-16 03:49:48.000", "2016-07-16 03:49:49.000", "2016-07-16 03:49:50.000"))
colnames(data) <- c("Id", "BegDate")
dtformat = "%Y-%m-%dT%H:%M:%SZ"
data$BegDate <- strftime(data$BegDate, format=dtformat, tz="")
data$BegDate
Azure ML Studio у меня нет :( - проверить не могу ...

Re: Изменение формата даты!

Добавлено: 20 окт 2016, 08:24
nplatonov
Если понадобятся миллисекунды, то

Код: Выделить всё

format(as.POSIXlt("2016-07-16 03:49:48.987",tz="UTC"),"%Y-%m-%dT%H:%M%:%OS3Z")