如何转换112889(mmddyy)至11/28/89或11/28/1989

时间:2017-09-15 03:44:35

标签: javascript angular typescript momentjs

我们如何将这个无格式日期112889(mmddyy)转换为特定格式,如11/28/89?

console.log(new Date('112889'))
// I got this: Sat Jan 01 112889 00:00:00 GMT+0800

我在google的任何地方搜索过这个问题,但没有找到具体的答案。

参考搜索:

  1. https://forums.asp.net/t/1987249.aspx?How+can+i+convert+Date+1365715800000+format+to+MM+dd+yyyy
  2. Convert number into date using javascript
  3. 我也在思考momentjs格式,但无法找到任何关于此的文档,或者我只是错过了它

3 个答案:

答案 0 :(得分:2)

使用momentjs库,您可以指定输入字符串的格式,即本例中的MMDDYY。

var d = new moment("112889", "MMDDYY");
document.getElementById('dated').innerText = d.format('MM/DD/YYYY');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<div id="dated"></div>

答案 1 :(得分:1)

请看看moment.js图书馆。试试这段代码

    var date = moment('112889',"MMDDYY").format('MM/DD/YY');
    console.log(data);

答案 2 :(得分:0)

如果您不想使用库,并且如果您知道您的输入始终为mmddyy格式,则可以执行以下操作:

var str = '112889';
var arr = str.match(/.{1,2}/g); // Splits string into 2 character chunks
var d = new Date(arr[2],arr[0],arr[1]);
console.log(d);

但是这是非常不正确的,因为如果你给出一个像112804这样的字符串,那么JS(或其他任何人)就不会知道它是1904年还是2004年,而且它将会获得1904年。在这种情况下,你应该明确指定:

var str = '112896';
var arr = str.match(/.{1,2}/g); // Splits string into 2 character chunks
var d = new Date(arr[2], arr[0], arr[1]); // new Date(yy,mm,dd);
var presentYear = Number((new Date()).getFullYear());
var dateYear = Number(d.getFullYear());
if (presentYear >= dateYear + 100) { // If adding 100 to year makes it greater than present year, then move to 2000s
  d = new Date('20' + arr[2], arr[0], arr[1]);
}
console.log(d);