'Automatically convert date text to correct date format using Google Sheets
I'm trying to convert date from "text" to correct format. It is logged to Google Spreadsheets and I'm unable to use it to plot graphs.
This is the text format: February 3, 2018, at 11:21 AM
Time is not relevant, all I need is the date converted: DD/MM/YYYY.
I found a similar question where Gary's Student answered with a formula that looks like this for a different format:
=DATEVALUE(SUBSTITUTE(A1,MID(A1,FIND(" ",A1)-2,2),""))
How can I use above formula (or something similar) so that text is converted to date?
Thanks in advance.
Solution 1:[1]
The , at portion of the string is keeping Google Sheets from recognizing it as a datevalue. Just remove it with the substitute function and wrap in datevalue function like so: =DATEVALUE(SUBSTITUTE(A1,", at",""))
To format as DD/MM/YYYY just go to custom formatting and set it to look like the following:

Solution 2:[2]
=DATEVALUE(JOIN("/", LEFT(D5,2), {MID(D5,4,2), RIGHT(D5,4)}))
where D5 contains for example: 25.06.2019
which script converts to datevalue: 43641
Dateformat is as dd.MM.YYYY converted to dd/MM/YYYY and then converted to datevalue.
Google sheet's documentation helps:
DATEVALUE, JOIN, LEFT, MID, RIGHT
Datevalue is useful for organizing rows of data by date correctly.
Solution 3:[3]
Another solution is to create custom function.
- Open
tools?script editorin menu to open script editor in new tab - Click
Untitled projectin top left corner and rename - Open
Resources?Librariesin top menu - Paste library key
MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48and clickAddto add theMomentlibrary to your script - Choose
Momentversion9and clickSave - Paste function
function parseDate(dateString, format){
return Moment.moment(dateString, format).toDate()
}
to Code.gs and save project Ctrl+S
Now you use your function in any cell in your sheet:
=parseDate(B2,"MMM D, YYYY, at HH:mm A")
more details about format: https://momentjs.com/docs/#/parsing/string-formats/
You can also create function to display date in custom format:
function formatDate(date, format){
return Moment.moment(date).format(format)
}
Use it like this in cell
=formatDate(B5,"DD/MM/YYYY")
or
=formatDate(parseDate(B2,"MMM D, YYYY, at HH:mm A"),"DD/MM/YYYY")
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Torey Price |
| Solution 2 | Neuron - Freedom for Ukraine |
| Solution 3 | Lex |

