Explanation

When date information from other systems is pasted or imported to Excel, it may not be recognized as a proper date or time. Instead, Excel may interpret this information as a text or string value only. In this example, the goal is to extract valid date and time information from a text string and convert that information into a datetime . It is important to understand that Excel dates and Excel times are numbers so at a high level, the main task is to convert a text value to the appropriate numeric value.

Date

To get the date, we extract the first 10 characters of the value with the LEFT function :

LEFT(B5,10) // returns "2015-03-01"

The result is text, so to get Excel to interpret as a date, we wrap LEFT in DATEVALUE , which converts the text into a proper Excel date .

Time

To get the time, we extract 8 characters from the middle of the text with the MID function :

MID(B5,12,8) // returns "12:28:45"

Again, the result is text. To get Excel to interpret this value as time, we wrap MID in TIMEVALUE , which converts the text into a proper Excel time .

Datetime

To get a final datetime , we just add the date value to the time value. The formula in E5 is:

=C5+D5

Once you have a valid datetime, use custom number formatting to display the value as desired.

All in one formula

Although this example extracts the date and time separately for clarity, you can combine formulas if you like. The following formula extracts the date and time, and adds them together in one step:

=LEFT(date,10)+MID(date,12,8)

Note that DATEVALUE and TIMEVALUE aren’t necessary in this case because the math operation (+) causes Excel to automatically coerce the text values to numbers.

Explanation

This formula builds the final result in 2 parts, joined by concatenation with the ampersand (&) operator.

On the left of the ampersand, we generate the year value. To extract a 2-digit year, we can use the TEXT function, which can apply a number format inside a formula:

TEXT(B5,"yy")

To extract a full year, use the YEAR function:

YEAR(B5)

On the right side of the ampersand we need to figure out the day of year. We do this by subtracting the last day of the previous year from the date we are working with. Because dates are just serial numbers, this will give us the “nth” day of year.

To get the last day of year of the previous year, we use the DATE function. When you give DATE a year and month value, and a zero for day, you get the last day of the previous month. So:

B5-DATE(YEAR(B5),1,0)

gives us the last day of the previous year, which is December 31, 2015 in the example.

Now we need to pad the day value with zeros. Again, we can use the TEXT function:

TEXT(B5-DATE(YEAR(B5),1,0),"000")

Reverse Julian date

If you need to convert a Julian date back to a regular date, you can use a formula that parses Julian date and runs it through the date function with a month of 1 and day equal to the “nth” day. For example, this would create a date from a yyyyddd Julian date like 1999143.

=DATE(LEFT(A1,4),1,RIGHT(A1,3)) // for yyyyddd

If you just have a day number (e.g. 100, 153, etc.), you can hard-code the year and insert the day this:

=DATE(2016,1,A1)

Where A1 contains the day number. This works because the DATE function knows how to adjust for values that are out of range.