Reputation: 1767
I want to have the short notation of the Date.toLocaleDateString() but in local format. There are a lot of solutions that hard-code the yyyy-mm-dd format but I want it to be dependent on the system that is hosting the page. This is my function thus far:
function getDate(dateTimeString)
{
var date = getDateTime(dateTimeString);
var options = { year: "numeric", month: "numeric", day: "numeric" };
return date.toLocaleDateString( date.getTimezoneOffset(), options );
}
but this returns it like so: Wednesday, January 28, 2015 which I don't want. Any suggestions/ideas?
PS: it's not a browser and there is a pretty real possibility that the person using it does not have interwebs connection; all information is gotten from a local database so I can't use any fany stuff like this How to get visitor's location (i.e. country) using javascript geolocation.
Upvotes: 76
Views: 318846
Reputation: 186
For this format YYYY-MM-DD, you can use this:
const n = new Date(dateTimeString);
const scheduleTime = n.toLocaleDateString("sv-SE");
Upvotes: 7
Reputation: 19
For this format YYYY-MM-DD, use this
var mm = ("0" + (date.getMonth() + 1)).slice(-2);
var dd =("0" + (date.getDate())).slice(-2);
var yy = date.getFullYear();
var dateString = yy + '-' + mm + '-' + dd;
Example of the result
2023-08-21
Upvotes: 1
Reputation: 3348
var countries = [
"ar-SA",
"bn-BD",
"bn-IN",
"cs-CZ",
"da-DK",
"de-AT",
"de-CH",
"de-DE",
"el-GR",
"en-AU",
"en-CA",
"en-GB",
"en-IE",
"en-IN",
"en-NZ",
"en-US",
"en-ZA",
"es-AR",
"es-CL",
"es-CO",
"es-ES",
"es-MX",
"es-US",
"fi-FI",
"fr-BE",
"fr-CA",
"fr-CH",
"fr-FR",
"he-IL",
"hi-IN",
"hu-HU",
"id-ID",
"it-CH",
"it-IT",
"ja-JP",
"ko-KR",
"nl-BE",
"nl-NL",
"no-NO",
"pl-PL",
"pt-BR",
"pt-PT",
"ro-RO",
"ru-RU",
"sk-SK",
"sv-SE",
"ta-IN",
"ta-LK",
"th-TH",
"tr-TR",
"zh-CN",
"zh-HK",
"zh-TW"
];
countries.forEach( (country) => {
console.log( `${country}: ${new Date().toLocaleString(country)}` );
} );
Upvotes: 4
Reputation: 1069
JavaScript Date toLocaleString() This method formats a date into a string, using language specific format.
Examples :
Only date :
var n = new Date();
console.log("es-CL: " + n.toLocaleDateString("es-CL"));
// es-CL: 03-09-2021
Date with Time :
var n = new Date();
console.log("es-CL: " + n.toLocaleString("es-CL"));
// es-CL: 03-09-2021 17:56:58
List are here :
ar-SA: ٢٦/١/١٤٤٣ هـ في ٥:٥٦:٥٨ م
bn-BD: ৩/৯/২০২১ ৫:৫৬:৫৮ PM
bn-IN: ৩/৯/২০২১ ৫:৫৬:৫৮ PM
cs-CZ: 3. 9. 2021 17:56:58
da-DK: 3.9.2021 17.56.58
de-AT: 3.9.2021, 17:56:58
de-CH: 3.9.2021, 17:56:58
de-DE: 3.9.2021, 17:56:58
el-GR: 3/9/2021, 5:56:58 μ.μ.
en-AU: 03/09/2021, 5:56:58 pm
en-CA: 2021-09-03, 5:56:58 p.m.
en-GB: 03/09/2021, 17:56:58
en-IE: 3/9/2021, 17:56:58
en-IN: 3/9/2021, 5:56:58 pm
en-NZ: 3/09/2021, 5:56:58 pm
en-US: 9/3/2021, 5:56:58 PM
en-ZA: 2021/09/03, 17:56:58
es-AR: 3/9/2021 17:56:58
es-CL: 03-09-2021 17:56:58
es-CO: 3/9/2021, 5:56:58 p. m.
es-ES: 3/9/2021 17:56:58
es-MX: 3/9/2021 17:56:58
es-US: 3/9/2021 5:56:58 p. m.
fi-FI: 3.9.2021 klo 17.56.58
fr-BE: 03/09/2021, 17:56:58
fr-CA: 2021-09-03, 17 h 56 min 58 s
fr-CH: 03.09.2021, 17:56:58
fr-FR: 03/09/2021, 17:56:58
he-IL: 3.9.2021, 17:56:58
hi-IN: 3/9/2021, 5:56:58 pm
hu-HU: 2021. 09. 03. 17:56:58
id-ID: 3/9/2021 17.56.58
it-CH: 3/9/2021, 17:56:58
it-IT: 3/9/2021, 17:56:58
ja-JP: 2021/9/3 17:56:58
ko-KR: 2021. 9. 3. 오후 5:56:58
nl-BE: 3/9/2021 17:56:58
nl-NL: 3-9-2021 17:56:58
no-NO: 3.9.2021, 17:56:58
pl-PL: 3.09.2021, 17:56:58
pt-BR: 03/09/2021 17:56:58
pt-PT: 03/09/2021, 17:56:58
ro-RO: 03.09.2021, 17:56:58
ru-RU: 03.09.2021, 17:56:58
sk-SK: 3. 9. 2021, 17:56:58
sv-SE: 2021-09-03 17:56:58
ta-IN: 3/9/2021, பிற்பகல் 5:56:58
ta-LK: 3/9/2021, 17:56:58
th-TH: 3/9/2564 17:56:58
tr-TR: 03.09.2021 17:56:58
zh-CN: 2021/9/3 下午5:56:58
zh-HK: 3/9/2021 下午5:56:58
zh-TW: 2021/9/3 下午5:56:58
Upvotes: 72
Reputation: 89
const options = { year: 'numeric', month: 'numeric', day: 'numeric' }
const new Date(date).toLocaleDateString('en', options)
Upvotes: 3
Reputation: 894
For date : .toLocaleDateString('en-US', {day: "numeric"})
For month in full : .toLocaleDateString('en-US', {month: "long"})
For month in short : .toLocaleDateString('en-US', {month: "short"})
For day in full : .toLocaleDateString('en-US', {day: "long"})
For dayin short: .toLocaleDateString('en-US', {day: "short"})
Upvotes: 6
Reputation: 9407
Note that NodeJS will only ship with the locale format of the device and so when you specify an argument toLocaleDateString like:
new Date("1983-March-25").toLocaleDateString('fr-CA', { year: 'numeric', month: '2-digit', day: '2-digit' })
'03/25/1983'
Notice you expected 'fr-CA' to give you YYYY-MM-DD, but it did not. That's because it is only ever using the US locale since my Node instance is running in the US locale.
There's actually a bug report on Node github account delineating the issue and solution:
https://github.com/nodejs/node/issues/8500
The solution provided is installing the full-icu
module.
Upvotes: 35
Reputation: 1100
I think the function toLocaleDateString use the default local data on the device.
try this code to check the output:
// America/Los_Angeles for the US
// US English uses month-day-year order
console.log(date.toLocaleDateString('en-US'));
// → "12/19/2012"
// British English uses day-month-year order
console.log(date.toLocaleDateString('en-GB'));
// → "20/12/2012"
// Korean uses year-month-day order
console.log(date.toLocaleDateString('ko-KR'));
// → "2012. 12. 20."
// Arabic in most Arabic speaking countries uses real Arabic digits
console.log(date.toLocaleDateString('ar-EG'));
// → "٢٠/١٢/٢٠١٢"
// chinese
console.log(date.toLocaleDateString('zh-Hans-CN'));
// → "2012/12/20"
Upvotes: 90
Reputation: 683
You could try something like:
var date = new Date(Date.UTC(2015, 0, 28, 4, 0, 0));
console.log(date.toLocaleDateString("nl",{year:"2-digit",month:"2-digit", day:"2-digit"}));
Which gives me "28-01-15" in Chrome (48.0.2564.116) at least.
Firefox just returns "01/28/2015", and phantomJS returns "28/01/2015" regardless of the locale.
Upvotes: 20
Reputation: 337
Yes. Its pretty straightforward. You can use the date object as follows:
var d = new Date();
var mm = d.getMonth() + 1;
var dd = d.getDate();
var yy = d.getFullYear();
Then you should have the numbers you need to form a string in whatever format you need.
var myDateString = yy + '-' + mm + '-' + dd; //(US)
Note this will give something like 2015-1-2 if the digits are in single figures, if you need 2015-01-02 then you will need further converting.
Also please note this will only give the 'client' date, ie. the date on the users system. This should be in their local time. If you need server time then you will have to have some kind of api to call.
Upvotes: 14
Reputation: 3209
Apparently Date.prototype.toLocaleDateString() is inconsistent across browsers. You can implement different variations of a short date format, as explained here: How format JavaScript Date with regard to the browser culture?
Upvotes: 1