## Converting Date Vector Returns Unexpected Output

Because a date vector is a 1-by-6 vector of numbers, `datestr` might interpret your input date vectors as vectors of serial date numbers, or vice versa, and return unexpected output.

Consider a date vector that includes the year 3000. This year is outside the range of years that `datestr` interprets as elements of date vectors. Therefore, the input is interpreted as a 1-by-6 vector of serial date numbers:

```datestr([3000 11 05 10 32 56]) ans = 18-Mar-0008 11-Jan-0000 05-Jan-0000 10-Jan-0000 01-Feb-0000 25-Feb-0000```

Here `datestr` interprets 3000 as a serial date number, and converts it to the date string `'18-Mar-0008'`. Also, `datestr` converts the next five elements to date strings.

When converting such a date vector to a character vector, first convert it to a serial date number using `datenum`. Then, convert the date number to a character vector using `datestr`:

```dn = datenum([3000 11 05 10 32 56]); ds = datestr(dn) ds = 05-Nov-3000 10:32:56```

When converting dates to character vectors, `datestr` interprets input as either date vectors or serial date numbers using a heuristic rule. Consider an `m`-by-6 matrix. `datestr` interprets the matrix as `m` date vectors when:

• The first five columns contain integers.

• The absolute value of the sum of each row is in the range 1500–2500.

If either condition is false, for any row, then `datestr` interprets the `m`-by-6 matrix as `m`-by-6 serial date numbers.

Usually, dates with years in the range 1700–2300 are interpreted as date vectors. However, `datestr` might interpret rows with month, day, hour, minute, or second values outside their normal ranges as serial date numbers. For example, `datestr` correctly interprets the following date vector for the year 2014:

```datestr([2014 06 21 10 51 00]) ans = 21-Jun-2014 10:51:00 ```

But given a day value outside the typical range (1–31), `datestr` returns a date for each element of the vector:

```datestr([2014 06 2110 10 51 00]) ans = 06-Jul-0005 06-Jan-0000 10-Oct-0005 10-Jan-0000 20-Feb-0000 00-Jan-0000```

When you have a matrix of date vectors that `datestr` might interpret incorrectly as serial date numbers, first convert the matrix to serial date numbers using `datenum`. Then, use `datestr` to convert the date numbers.

When you have a matrix of serial date numbers that `datestr` might interpret as date vectors, first convert the matrix to a column vector. Then, use `datestr` to convert the column vector.