Converting cell array containing date strings to weekday?

Hello, I have a 366*1 cell array containing date string such as '2015-01-01'. I want to change this date string to weekday such as Monday, Tuesday..etc. What function should I have to use? Thanks!

Answers (1)

Use the weekday function:
date_cell = {'2015-01-01'; '2015-01-02'; '2015-01-03'};
dn = datenum(date_cell, 'yyyy-mm-dd');
[~,DayOfWeek] = weekday(dn,'long')
DayOfWeek =
3×8 char array
'Thursday'
'Friday '
'Saturday'

4 Comments

Thank you for your answer, However, I got error message said 'Error using weekday (line 49) DATENUM failed.' I used this code...
t = rawData(:,1);
dn = {t,'yyyy-mm-dd'};
[~,DayofWeek] = weekday(dn,'long');
DayofWeek
My pleasure.
I have no idea what your ‘rawData’ has. The syntax you are using does not appear to be correct.
Try this:
dn = datenum(rawData{:}(:,1), 'yyyy-mm-dd');
[~,DayOfWeek] = weekday(dn,'long')
Without your ‘rawData’ cell array, I cannot test this, so I am guessing this is the correct way to address your cell array.
This is part of 1st column of rawData. So 1st column of rawdata is a cell array containing bunch of data strings.. and I want to change this into weekday so that I could calculate average of certain values per weekday..
'Date'
'2015-01-01'
'2015-01-02'
'2015-01-03'
'2015-01-04'
'2015-01-05'
'2015-01-06'
'2015-01-07'
'2015-01-08'
'2015-01-09'
I had to create a cell array that resembled yours in order to get the addressing correct.
This works:
rawData = {'Date' 'Number'; '2015-01-01' 10; '2015-01-02' 5; '2015-01-03' 7};
dv = {rawData{2:end,1}};
dn = datenum(dv, 'yyyy-mm-dd');
[~,DayOfWeek] = weekday(dn,'long')

Sign in to comment.

Asked:

on 1 Apr 2017

Commented:

on 1 Apr 2017

Community Treasure Hunt

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

Start Hunting!