Get tenor between two time points

In excel, if some cells are in the format of date, then the difference of the cells gives you the tenor. How can I do that in Matlab?
To be specific I mean I already have some serial data number, say 20110610 and 20110716 (today's date and the expiration date of the contract), and I wanna get the number of days between these two dates. So in this example I'd like to get 36.
If I do: 20110716-20110610, the ans is 106, the same as
datenum(20110716)-datenum(20110610)=106
So my question is, again, how can I get 36 out of these two dates?
Thanks in advance :)

 Respuesta aceptada

Andrew Newell
Andrew Newell el 10 de Jun. de 2011
d1 = datenum('20110610','yyyymmdd');
d2 = datenum('20110716','yyyymmdd');
d2-d1

8 comentarios

Zoe
Zoe el 10 de Jun. de 2011
Here it is, thx :)
Zoe
Zoe el 10 de Jun. de 2011
And actually d2 is a vector of maturity dates for me and d1 is only one entry (today's date). Is there any way to implement the same thing without using loop? ( Do you think there is a way to convert a vector using datenum as you did but without any loop?)
Fangjun Jiang
Fangjun Jiang el 10 de Jun. de 2011
It works. What is your original data format?
datenum({'20110711','20110712'},'yyyymmdd')
Zoe
Zoe el 10 de Jun. de 2011
%f
It is a vector of numerical numbers which was imported from .txt file.
Andrew Newell
Andrew Newell el 10 de Jun. de 2011
You can use
d1 = floor(now);
Zoe
Zoe el 10 de Jun. de 2011
Another question bothering me is:
d1 = datenum('20110609','yyyymmdd');
d1 =
734663
D = 20110609;
d2 = datenum('D','yyyymmdd')
d2 =
734504
Do you know why? Thx!!!
Andrew Newell
Andrew Newell el 10 de Jun. de 2011
'D' is not the string version of the number:
>> D = 20110609;
>> D
D =
20110609
>> 'D'
ans =
D
Use d2 = datenum(num2str(D),'yyyymmdd') instead.
Fangjun Jiang
Fangjun Jiang el 10 de Jun. de 2011
You need to learn a little bit about the data type of Matlab.
In "D=20110609", D is the variable name, its value is 20110609. In "d2=datenum('D','yyyymmdd'), D is the capital letter D. What you really need is datenum(num2str(D),'yyyymmdd').
To make it work for vector,
a=[20110711 20110712 20110712];
datenum(arrayfun(@num2str,a,'un',0),'yyyymmdd')

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

Zoe
el 10 de Jun. de 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by