Различия между строковыми представлениями даты / времени - PullRequest
0 голосов
/ 01 декабря 2009

В Excel 2007 я хочу различия для следующих строковых даты / времени:

  A                         B                          C
1 Date1                     Date2                      Difference of A and B
2 2009.11.28 01:25:46:0287  2009.11.28 01:25:46:0287   ?
3 2009.11.28 01:25:46:0443  2009.11.28 01:25:46:0443   ?

Мне нужны различия путем преобразования строк в дату / время, а затем результаты в виде разностей двух преобразованных даты / времени.

Ответы [ 2 ]

1 голос
/ 11 марта 2015

Довольно скучный способ вычисления нуля (для примеров):

=SUBSTITUTE(LEFT(A2,10),".","/")+MID(A2,12,8)+RIGHT(A2,4)/86400000-(SUBSTITUTE(LEFT(B2,10),".","/")+MID(B2,12,8)+RIGHT(B2,4)/86400000)  

По специальному запросу и очень немного короче:

=SUBSTITUTE(LEFT(A2,10),".","/")+REPLACE(RIGHT(A2,13),9,1,".")-(SUBSTITUTE(LEFT(B2,10),".","/")+REPLACE(RIGHT(B2,13),9,1,"."))
0 голосов
/ 01 декабря 2009

Я не мог придумать действительно хороший способ сделать это ... надеюсь, кто-то еще. Сказав это, следующее может дать вам то, что вам нужно.

Чтобы преобразовать часть основной даты, используйте следующую формулу (предполагается, что дата строки указана в A1):

=DATE(MID(A1,1,4),MID(A1,6,2),MID(A1,9,2)) +
    TIME(MID(A1,12,2),MID(A1,15,2),MID(A1,18,2))

Чтобы преобразовать дробную вторую часть, используйте:

=VALUE(MID(A1,21,4))/10000

Дату / время можно легко вычесть, как и дробную вторую часть.

Место, где я столкнулся с трудностями, состояло в том, чтобы объединить эти части в единое целое, которое Excel действительно отобразит разумным способом. Я, наконец, взял разницу между двумя датами и умножил ее на 86400 (= 24 * 60 * 60 - количество секунд в обычном дне), а затем добавил разницу во второй дробной части.

Надеюсь, это поможет. С Уважением, Ричард

P.S. Есть много вещей, которые мне не нравятся в этом решении, самая большая из которых - хрупкость формул - если формат даты изменится, формулы нужно будет скорректировать.

...