преобразование гггг-мм-дд чч: мм: ss.ms к гггг-мм-дд чч: мм: сс использованием MATLAB

Обновить

November 2018

Просмотры

355 раз

2

Я получил метки времени наборы данных , которые находятся в формате yyyy-mm-dd HH:MM:SS.ms. Я хочу , чтобы преобразовать в yyyy-mm-dd HH:MM:SSформат. Есть ли способ , чтобы выбрать только в этом формате с использованием MATLAB?

Например:

2012-08-01 00:10:00.0

должно быть:

2012-08-01 00:10:00

Обратите внимание, что значение миллисекунд равен нуль.

3 ответы

4

Общий путь был бы использовать , datestrчтобы преобразовать его в нужный формат.

dates = {'2012-08-01 00:10:00.1';
         '2012-08-01 00:10:00.1'};

new = datestr(dates, 'yyyy-mm-dd HH:MM:SS');
%   2012-08-01 00:10:00
%   2012-08-01 00:10:00

Другой подход заключается в том, что, так как все ваши миллисекундах будет ноль (поэтому вам не придется беспокоиться о округлении), вы можете просто использовать регулярные выражения, чтобы удалить компонент миллисекунды (ничего после десятичной точки)

new = regexprep(dates, '\..*', '')

Это, вероятно , будет более производительным , как вам не нужно выполнять промежуточный этап преобразования либо в datetimeобъект или номер даты.

3

Так как формат ввода и вывода одинаковы за исключением миллисекунд, не используйте даты функции, но простые операции со строками:

% example dates
C = {'2012-08-01 00:10:00.0'
     '2013-08-02 00:11:11.0'
     '2014-08-03 00:12:22.0'
     '2015-08-04 00:13:33.0'
     '2016-08-05 00:14:44.0'};

% method 1
D = cellfun(@(x)x(1:end-2), C, 'UniformOutput', false);

% method 2 (same, but no cellfun)
D = char(C);
D = cellstr(D(:,1:end-2));

% method 3
D = regexp(C, '[^\.]*', 'match', 'once');

% method 4
D = regexprep(C, '\..*$', '');
2

Допустим, вам нужно эти данные в объекты даты и времени, так или иначе, то я бы сделать что-то вроде этого:

inp = {'2012-08-01 00:10:00.0'; '2012-08-02 04:10:00.0'}; % Some datestrins
t = datetime(inp,'InputFormat','yyyy-MM-dd HH:mm:ss.0'); % Convert to datetimes
datestr(t, 'yyyy-mm-dd HH:MM:SS') % convert back to strings

Для ввода и вывода форматировщика смотрите документацию. Я предполагаю , что последняя часть всегда равна нулю.

Связанные вопросы