我試圖將MM/DD/YYYY日期轉換爲長日期。因此,例如,02/12/2013
將轉換爲類似Tuesday February 12 2013
。將MM/DD/YYYY日期轉換爲月日年
我看過MomentJS和其他JS方法,但沒有真正做我想要的東西。或者至少,我不這麼認爲。
有沒有辦法讓這個日期轉換準確?
我試圖將MM/DD/YYYY日期轉換爲長日期。因此,例如,02/12/2013
將轉換爲類似Tuesday February 12 2013
。將MM/DD/YYYY日期轉換爲月日年
我看過MomentJS和其他JS方法,但沒有真正做我想要的東西。或者至少,我不這麼認爲。
有沒有辦法讓這個日期轉換準確?
使用moment.js,
你可以做它像JavaScript這樣的日期對象
var date = new Date(2013, 1, 12);
console.log(moment(date).format('dddd MMMM D Y'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>
如果你想一個日期字符串轉換爲長日期格式字符串,你可以不喜歡這樣。
var longDateStr = moment('02/12/2013', 'M/D/Y').format('dddd MMMM D Y');
console.log(longDateStr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>
這很好用!感謝格式幫助! – SteveV
隨着moment.js這是相當簡單:
console.log(moment('02/12/2013', 'MM/DD/YYYY').format('dddd MMMM D Y'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>
使用時刻,
moment().format('dddd MMMM Do YYYY');
momentJS的主頁上,你可以看到所有的列表可能的日期格式(http://momentjs.com/)。
Do
增加了「第n」的日期,使其D
只能有一個顯示號碼,但由於您選擇寫的所有文字,它能夠更好地使用「第n個」
您可以使用普通的JavaScript日期的方法類似的東西:
var date = new Date("01/01/2000")
date.toDateString() //"Sat Jan 01 2000"
OP不要求「類似的東西」。 –
「...因此,例如,2013年12月2日將轉換爲2013年2月12日星期二的SOMETHING LIKE。」 另外一個快速的String.replace()可以修復格式而不需要外部庫 – StackOverMySoul
不推薦使用Date構造函數(或Date.parse)解析字符串,因爲它主要依賴於實現並且不可靠。 – RobG
FullJS:
function mydate(date)
{
var
month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
;
return days[date.getDay()]+' '+month[date.getMonth()]+' '+date.getDate()+' '+date.getFullYear()
}
console.log(mydate(new Date()));
參考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
如果你不想讓你可以使用Date
任何其他腳本和某些陣列
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var now = new Date('02/12/2013');
console.log(days[now.getDay()] + ' ' + months[now.getMonth()] + ' ' + now.getDate() + ' ' + now.getFullYear()); //Tuesday February 12 2013
在一個現代的瀏覽器可以使用Intl API
的國際對象是ECMAScript的 國際化API的命名空間,它提供了語言敏感字符串 相比,數量格式和日期和時間格式。Collator,NumberFormat和DateTimeFormat對象 的構造函數是Intl對象的屬性。
解析手動地執行,Date.parse
不建議使用Date.parse作爲直到ES5, 串的解析是完全依賴於實現的。在不同的主機解析日期字符串方面仍有許多差異,因此應該手動解析日期 字符串(如果要容納多個不同的格式,庫可以提供幫助)。
Date.UTC用於爲Intl.DateTimeFormat#format提供parts
的日期。
的Date.UTC()方法接受相同的參數爲最長形式構造的 ,並返回毫秒數在一個日期 對象自00:00:00 1970年1月1日,通用時間
最後,
的從en-US
格式化的字符串中刪除,以便它符合您的要求。
const parts = '02/12/2013'.split('/');
parts.unshift(parts.pop());
parts[1] -= 1;
const dateString = new Intl.DateTimeFormat('en-US', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
timeZone: 'UTC'
}).format(Date.UTC(...parts)).replace(/,/g, '');
console.log(dateString);
並非所有當前瀏覽器[*支持Intl對象*](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Intl#Browser_compatibility)(移動支持特別差),也不是目前使用的許多瀏覽器。 – RobG
除Safari之外的所有主流瀏覽器都支持它的基本實現,我不知道的移動設備,但與ES5,ES6和ES7一樣,它有一個填充/填充,但我從未測試過。 https://github.com/andyearnshaw/Intl.js/就像一切,支持會變得更好。我不知道transpilers是否支持它。 – Xotic750
我覺得有一些簡單的方法來做到這一點。
function getData(){
var d = new Date("02/12/2013");
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var n = d.toLocaleDateString('en-US',options);
var t = d.toLocaleTimeString('en-GB')
var replase = n.replace(new RegExp(',', 'g'),' ')
document.getElementById("demo").innerHTML = replase
}
想要使用'moment.js'還是隻想純粹的javascript? – Mohammad
'有點像'或'準確'嗎? – Xotic750