亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 vanilla javascript 格式化日期而不使用包

使用 vanilla javascript 格式化日期而不使用包

九州編程 2022-07-15 09:59:58
我有一些從 API 中獲取的日期,格式如下1960-06-21。我想編寫一個將日期格式化為 this 的函數21 June 1960。網上有很多人建議只使用諸如 moment.js 之類的庫,但如果可能的話,我想嘗試只使用 JavaScript,使用最現代的功能。這甚至可能嗎?我找到了轉換單個日期的解釋const d = new Date('1993-10-30');  const dtf = new Intl.DateTimeFormat('en', {    year: 'numeric',    month: 'long',    day: '2-digit',  });  const [{ value: mo }, , { value: da }, , { value: ye }] = dtf.formatToParts(    d  );  console.log(`${da} ${mo} ${ye}`);// 30 October 1993但是這個例子只需要一個日期,我有 100 個來自 API 的日期,所以需要它是一個靈活的函數。
查看完整描述

4 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

如果輸入字符串總是格式良好的 ISO 8601 日期,那么使用輸入字符串相當簡單:


const monthNames = [

  'January', 'February', 'March',     'April',   'May',      'June',

  'July',    'August',   'September', 'October', 'November', 'December'

]


const reformatDate = (iso) => {

  const [year, month, day] = iso.split('-')

  return `${Number(day)} ${monthNames[Number(month) - 1]} ${year}`

}


console .log (

  reformatDate ('1960-06-21')  //~> "21 June 1960"

)


// Or to do a list of dates:

const dates = ['1865-04-15', '1881-07-02', '1901-09-19', '1963-11-22']

console .log (

  dates .map (reformatDate)

  //~> ["15 April 1865", "2 July 1881", "19 September 1901", "22 November 1963"]

)


查看完整回答
反對 回復 2022-07-15
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

我會使用支持我的日期的方法:


function df(date){

  const m = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

  return date.getUTCDate()+' '+m[date.getUTCMonth()]+' '+date.getUTCFullYear();

}

const dt = new Date('1960-06-21');

console.log(df(dt));


查看完整回答
反對 回復 2022-07-15
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

嘗試:


const dt = new Date('1960-06-21');


const convert = (date) =>{

    const dateArr = date.toString().split(' ')

    return dateArr[2] +' '+dateArr[1] +' '+dateArr[3]

}


console.log(convert(dt))


查看完整回答
反對 回復 2022-07-15
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

為什么你不能創建一個函數并重用它?


例子:


const dtf = new Intl.DateTimeFormat('en', {

  year: 'numeric',

  month: 'long',

  day: '2-digit',

  timeZone: 'UTC'

});


function formatDate(date, format) {

  const [{ value: mo }, , { value: da }, , { value: ye }] = format.formatToParts(date);


  return `${da} ${mo} ${ye}`;

}


const dates = ['1993-10-30', '2003-10-29', '1999-12-30'];


console.log(dates

  .map(date => Date.parse(date))

  .map(date => formatDate(date, dtf))

);


查看完整回答
反對 回復 2022-07-15
  • 4 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號