Please Note: This article is written for users of the following Microsoft Excel versions: 2007, 2010, 2013, 2016, 2019, and Excel in Office 365. If you are using an earlier version (Excel 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Excel, click here: Converting European Dates to US Dates.

Converting European Dates to US Dates

by Allen Wyatt
(last updated July 14, 2021)

9

Linda asked if there is a formula that will convert a date shown in the European fashion of day/month/year to the US version of month/date/year. Truth be told, this may not be necessary. You see, Excel maintains dates, internally, as numeric values and then simply displays them using various formats. If the dates are truly dates—numeric values—in the worksheet, then you can simply change the format and the dates will be displayed in the way common to the US.

Of course, the date you see in a worksheet could be a text value, instead of a date value. You can test whether the date is really an Excel date or a text value by changing the format of the cell (or cells) to General. (Do this using the Number tab of the Format Cells dialog box.) If it is text, you'll see no change in the display. If it is a date value, the date should change to a number that represents the number of days since whatever base date your system is using (typically January 1, 1900).

If your dates are truly date values, then simply change the format of the cell (or cells) to whatever date format you want to use. Again, this is done using the Number tab of the Format Cells dialog box.

If your dates are text values, then you will need to convert them to true date values (non-text) so that they can be formatted as just described. You can do this by using a formula to do the conversion. If you have a text date in cell A1 in the format dd/mm/yyyy, then you can use the following formula:

=DATE(VALUE(RIGHT(A1,4)), VALUE(MID(A1,4,2)), VALUE(LEFT(A1,2)))

The result of this formula is a date serial number that is recognized and can be formatted by Excel.

Of course, it is possible that you have a bunch of mixed dates in your worksheet. Consider the following list of dates:

1/1/20
2/1/20
3/1/20
4/1/20
5/1/20
6/1/20
7/1/20
8/1/20
9/1/20
10/1/20
11/1/20
12/1/20
13/1/20
14/1/20
15/1/20
16/1/20
17/1/20

If these are entered into a worksheet, the first twelve dates (1/1/20 through 12/1/20) are parsed by Excel as January 1, 2020, through December 1, 2020. The next five dates are parsed as text since Excel doesn't, by default, recognize that the dates are in d/m/y format. If you have a bunch of dates like this, you can quickly convert them to real dates without the use of any formulas. Just follow these steps:

  1. Select all the cells containing the dates—both the date values and the text values.
  2. Start the Text to Columns wizard. (Select Text to Columns in the Data Tools group from the Data tab of the ribbon.) (See Figure 1.)
  3. Figure 1. The first screen of the Convert Text to Columns wizard.

  4. Choose Fixed Width and click Next to proceed to step 2 of the wizard.
  5. If you see any column break indicators in the dialog box, get rid of them by double-clicking on them. You don't want any such indicators because you don't want Excel to think you have static breaking places for your data.
  6. When all the column break indictors are gone, click Next to proceed to step 3 of the wizard.
  7. In the Column Data Format section of the dialog, click the Date radio button.
  8. Using the date format drop-down list, choose DMY.
  9. Click Finish.

That's it; your data is converted, in place, to the date values that Excel can work with.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (10566) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, and Excel in Office 365. You can find a version of this tip for the older menu interface of Excel here: Converting European Dates to US Dates.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Excluding a Specific Add-In at Startup

Got an add-in that you don't want loaded each time that Excel starts up? Here's a few ways that you can exclude it.

Discover More

Inconsistent Formatting in an Index

When indexing a document, you may find that some of your index entries aren't formatted the same as your other index ...

Discover More

Returning Item Codes Instead of Item Names

The data validation capabilities of Excel are really handy when you want to limit what is put into a cell. However, you ...

Discover More

Program Successfully in Excel! John Walkenbach's name is synonymous with excellence in deciphering complex technical topics. With this comprehensive guide, "Mr. Spreadsheet" shows how to maximize your Excel experience using professional spreadsheet application development tips from his own personal bookshelf. Check out Excel 2013 Power Programming with VBA today!

More ExcelTips (ribbon)

Calculating Averages by Date

When you have a huge amount of daily data to analyze, you may want to calculate an average of values for any given date ...

Discover More

Every Second Tuesday

Need a way to enter dates from every second Tuesday (or some other regular interval)? Excel makes it easy, providing ...

Discover More

Inserting Tomorrow's Date

You can use a couple of different worksheet functions to enter today's date in a cell. What if you want to calculate ...

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] in your comment text. You’ll be prompted to upload your image when you submit the comment. Maximum image size is 6Mpixels. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is three less than 3?

2021-08-05 12:13:56

David Czuba

Actually, VBA for Excel handles dates before 1900. Using the built-in function DateDiff achieves the same result I was seeking using much longer code in my earlier post:

Public Function FindAge(Birthdate As String, DeathDate As String) As Single
' Returns age in years between DOB and DOD, where arguments are dates input as text strings in MM/DD/YYYY format
Dim YearInDays As Single
YearInDays = 365.2425
FindAge = DateDiff("d", Birthdate, DeathDate) / YearInDays
End Function


2021-07-16 10:07:30

J. Woolley

You might also be interested in the TimeDif function in My Excel Toolbox:
=TimeDif(Start, Finish, [Approximate], [Conversational])
Start and Finish must be numeric or text dates and/or times. TimeDif returns the difference between Start and Finish as text, which can optionally be exact, approximate, or conversational.
See https://sites.google.com/view/MyExcelToolbox/


2021-07-15 12:02:05

David Czuba

Thanks for that, Philip. The topic of computer dates and times illustrates the compromises systems engineers had to make. The ancients had to deal with this and ultimately the Gregorian calendar has 10 days missing on purpose to account for calendar drift caused by the Earth's rotational period not dividing evenly into its revolution period around the sun (in short, a year does not have exactly 365 days). It is ironic that, to solve the calendar drift, the Vatican called upon astronomers and mathematicians in the 1500s to fix a centuries-old problem, while computer scientists focused on the short term. For sorting and calculating the age of a person or artifact, scientists, historians, genealogists, and auction-houses (to name a few) need a system that incorporates dates before 1900, and so, what do they do? That's where the YYYYMMDD date form is useful.

The following VBA function is an attempt to calculate the difference, in days, between dates prior to 1900. The input dates must be integers in YYYYMMDD form. I verified the accuracy of the algorithm to dates to 1452, although it is likely to be accurate to year zero, CE.

Option Explicit

Public Date1 As Single, Date2 As Single

Function DaysBetween(Date1, Date2)
'
' Returns the number of days between two dates in integer form YYYYMMDD
' The YYYYMMDD date format is useful for handling dates before January 1st, 1900.
' The Gregorian calendar year table contains a static 28 days for February
' Leap year calculations incorporate the fraction of 97 leap years every 400 years.
' It incorporates a reduction of 10 days between October 5 and October 15, 1582 in keeping with the Gregorian calendar correction
'
Dim intYear1 As Integer, intYear2 As Integer, intMonth1 As Integer, intMonth2 As Integer, intDay1 As Integer, intDay2 As Integer
Dim intYearDiff As Integer
Dim sngDaysBetweenWholeYears As Single, sngDaysBetweenYears As Single, intLeapDays As Integer, intDaysfromYearStart1 As Integer, intDaysfromYearStart2 As Integer
Dim intCalendar(12, 2) As Integer
Dim i As Integer

' initialize Calendar months and days of each month
' empty month (array is not base 1)
intCalendar(0, 1) = 0
intCalendar(0, 2) = 0

intCalendar(1, 1) = 1
intCalendar(1, 2) = 31
intCalendar(2, 1) = 2
intCalendar(2, 2) = 28
intCalendar(3, 1) = 3
intCalendar(3, 2) = 31
intCalendar(4, 1) = 4
intCalendar(4, 2) = 30
intCalendar(5, 1) = 5
intCalendar(5, 2) = 31
intCalendar(6, 1) = 6
intCalendar(6, 2) = 30
intCalendar(7, 1) = 7
intCalendar(7, 2) = 31
intCalendar(8, 1) = 8
intCalendar(8, 2) = 31
intCalendar(9, 1) = 9
intCalendar(9, 2) = 30
intCalendar(10, 1) = 10
intCalendar(10, 2) = 31
intCalendar(11, 1) = 11
intCalendar(11, 2) = 30
intCalendar(12, 1) = 12
intCalendar(12, 2) = 31
' initialise input year, month, and date from arguments
intYear1 = Left(Date1, 4)
intMonth1 = Mid(Date1, 5, 2)
intDay1 = Right(Date1, 2)
intYear2 = Left(Date2, 4)
intMonth2 = Mid(Date2, 5, 2)
intDay2 = Right(Date2, 2)
intYearDiff = Abs(intYear1 - intYear2)
sngDaysBetweenWholeYears = (intYearDiff - 1)
sngDaysBetweenWholeYears = sngDaysBetweenWholeYears * 365
intLeapDays = Int(intYearDiff * 0.2425)
' Subtract 11 days in allowment for dates before the US adoption of the Gregorian calendar on September 14, 1752
If Date1 < 17520914 Then
intDay1 = intDay1 - 11
End If
If Date2 < 17520914 Then
intDay2 = intDay2 - 11
End If
' Calculate days from year1 start by adding month's days to the calendar month + day of the month
For i = 1 To intMonth1 - 1
intDaysfromYearStart1 = intDaysfromYearStart1 + intCalendar(i, 2)
Next i
intDaysfromYearStart1 = intDaysfromYearStart1 + intDay1
' Calculate days from year2 start by adding month's days to the calendar month + day of the month
For i = 1 To intMonth2 - 1
intDaysfromYearStart2 = intDaysfromYearStart2 + intCalendar(i, 2)
Next i
intDaysfromYearStart2 = intDaysfromYearStart2 + intDay2
' Calculate difference
sngDaysBetweenYears = sngDaysBetweenWholeYears + intDaysfromYearStart2 + 365 - intDaysfromYearStart1 + intLeapDays
DaysBetween = sngDaysBetweenYears
End Function


2021-07-14 15:04:09

Philip

@David, the format YYYYMMDD is by the way also the standard convention in SQL and other database oriented systems and programming languages. It is definitely the most optimal convention to use in computer context for various objective reasons …

The format used in the North America’s is (similar to the imperial units system) a matter of tradition or taste, no technical reason.

By the way, the choice of the origin date in 1900 (on Mac it used to be 1904) comes from a simple and pragmatic reason : in the early days of desktop computing (late ‘70’s) the timer register on CPU’s had a limited number of positions, and a computer could not “count” indefinitely to keep track of time. The date of origin was chosen to accommodate the operation of CPU’s for a reasonable life span …


2021-07-14 11:43:58

David Czuba

Dealing with dates in Excel, as well as in the Windows operating system, can be such a drag, whether in the U.S. or any country. In the OS, I recommend using the format YYYY-MM-DD as the prefix for folder and file naming where you wish to keep files in chronological order, no matter what the created or modified date is. This can work as well in Excel for all dates (including those before 1900) by formatting the 8-digit integer YYYYMMDD with a delimiter of you choice (hyphen, slash, etc.). This system works for sorting dates, but of course it contains the drawback of not allowing straightforward calculation between dates by simple subtraction or addition. Why Microsoft chose a date system beginning January 1st, 1900 may have come down to this, and wanting to maintain convention with how people write dates in their country of origin.

If dates before 1900 or after 9999 are desired, such as in the scientific community, then the system I described is still useful. Regarding formatting, seethe example below. I entered several dates as integers in YYYYMMDD form and then sorted them. Then, I formatted them using a custom mask ####-##-##;@. This places the hyphen between year, month and day.

(see Figure 1 below)

Regarding calculation, a VBA function or table-based formula could return the difference between two dates entered as integers. I'll work on it and report back.

Figure 1. 


2018-07-21 07:24:12

Kent

?
1) First sentence now refers to year 2011
"If these are entered into a worksheet, the first twelve dates (1/1/11 through 12/1/11) are parsed by Excel as January 1, 2011, through December 1, 2011."

Based on the listed dates, should it be 2015?
"If these are entered into a worksheet, the first twelve dates (1/1/15 through 12/1/15) are parsed by Excel as January 1, 2015, through December 1, 2015."

2) Shouldn't the figure be...
(see Figure 1 below)


Figure 1. 




2017-04-16 12:08:02

CACody

My friend MPi (Michel) from Canada gave me this bit of code that is intended to correct for date differences that show up in different Excel versions and from different regions of the world.

Dim showDate As Boolean

Sep = Application.International(xlDateSeparator) 'defines the date separator
If Application.International(xlDateOrder) = 0 Then
If showDate = True Then .Columns(1).NumberFormat = "m" & Sep & "d" & Sep & "yyyy"
ElseIf Application.International(xlDateOrder) = 1 Then
If showDate = True Then .Columns(1).NumberFormat = "dd" & Sep & "mm" & Sep & "yyyy"
Else
If showDate = True Then .Columns(1).NumberFormat = "yyyy" & Sep & "mm" & Sep & "dd"
End If

Obviously the date entered is in Column 1. You'll need to research a bit on the use of the Application.International(xlDateSeparator)
Hope this helps.


2017-04-15 09:16:11

Fabrice

Hi Allen,
Thanks. Right on the money :)
very useful.
Sincerely,
Fabrice


2016-03-03 11:26:23

aron

Using excel 2010. No, this does not work at all. Bunk advise. I have a series of European dates, like 7/1/17, 14/1/17, 21/1/17, etc. They are NOT text. They ARE dates. No formatting I try will switch them to US dates like 1/7/17, 1/14/17, 1/21/17, etc.


This Site

Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.

Newest Tips
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.