How to convert date variable with varying length?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi there, I have a date variable with thousands of dates in the format mmddyy i would like to convert it to a yyyymmdd format. A problem i am having is whenever the month is bellow 10 the 0 is missing e.g. rather than reading 012988 it reads 12988. Thank-you
1 commentaire
Fangjun Jiang
le 12 Fév 2016
where is your source data come from, a text file, or already stored in a matrix, in what format?
Réponse acceptée
Jan
le 13 Fév 2016
I'd avoud the time consuming indirection over CHAR strings, but convert the doubles directly:
d = [120316, 12988];
year = rem(d, 100);
day = rem(floor(d / 100), 100);
month = rem(floor(d / 10000), 100);
% Decide how to convert the 2 digits year to a 4 digits year:
year = 1900 + year + 100 * (year < 1960);
result = year * 10000 + month * 100 + day;
Plus de réponses (2)
Matthew Eicholtz
le 12 Fév 2016
If your data is stored in a cell array, such as
d = {'21216','112515','91101','122515','70487'}; %random dates in mmddyy format (with leading '0' missing)
then add the leading '0' to months Jan-Sep,
d = cellfun(@(x) sprintf('%06s',x),d,'uni',0)
and use the built-in date functions to convert to the desired format,
newdates = num2cell(datestr(datenum(d,'mmddyy'),'yyyymmdd'),2);
2 commentaires
Jan
le 13 Fév 2016
@Aaron: You see that it would have been useful to post some example data in the question to clarify the type.
Azzi Abdelmalek
le 12 Fév 2016
You have to indicate the format of your data. Suppose your data are like below:
d=[12988 112589 52214]
e=arrayfun(@(x) num2str(x),d,'un',0)
f=cellfun(@(x) [num2str(zeros(1,6-numel(x))) x],e,'un',0)
out=cellfun(@(x) datestr(datenum(x,'mmddyy'),'yyyymmdd'),f,'un',0)
0 commentaires
Voir également
Catégories
En savoir plus sur Time Series Objects dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!