RSS 피드의 날짜 형식을 지정하는 방법(RFC-822)

10777 단어 webdebv
2021년 3월에 첫 번째 RSS 피드백을 구축했습니다. RSS에 대해 모두 배웠기 때문에 새로운 프로젝트를 위한 RSS 피드를 구축할 기회를 찾는 것을 좋아합니다. Check out the RSS feed for whitep4nth3r.com 예를 들어.

그러나 RSS 피드의 유효한 형식pubDate을 기억하는 데 어려움을 겪는 경우가 많으며 Google에서 일반 영어(RFC-822)의 올바른 날짜 형식을 찾기가 항상 어려웠습니다. 다음은 미래의 저와 여러분을 위해 이 주제에 대한 링크, 지침 및 코드 스니펫 모음입니다!

코드 스니펫에 도달하기 전에 RSS 피드와 RSS 피드를 처음부터 빌드하는 방법에 대해 자세히 알아보려면 제가 작성한 게시물(How to generate an RSS feed for your blog with JavaScript and Netlify functions)을 확인하세요.

RSS 피드 확인



저는 W3C Feed Validation Service을 사용하여 RSS 피드의 유효성을 검사합니다. 여기에서 URI 또는 ​​직접 XML 입력으로 RSS 문서의 유효성을 검사할 수 있습니다.

다음은 pubDate가 유효하지 않을 때 발생하는 상황입니다. 유효성 검사기는 "pubDate는 RFC-822 날짜-시간이어야 합니다"라고 보고합니다.



경고 바로 뒤에 도움말 링크가 있지만 항상 놓치는 부분입니다. 그래서 "RFC-822 날짜-시간 형식"에 대해 계속해서 인터넷 검색을 했지만 좋은 결과는 없었습니다. 마침내 도움말 링크를 클릭해야 한다는 것을 기억할 때까지 😅.

다음 번에 내 블로그에서 아래의 중요한 정보를 검색하는 것을 기억할 것입니다!

유효한 RFC-822 날짜 형식



유효한 RFC-822 날짜는 2002년 10월 2일 수요일 08:00:00 EST 형식을 따라야 합니다.
  • 쉼표가 오는 세 글자 요일(예: Wed, )
  • 앞에 0이 있는 요일 날짜(예: 02 )
    세 글자로 된 월(예: Oct)
  • 전체 연도(예: 2002 )
  • 24시간 형식의 일, 분, 초(예: 08:00:00 )
  • 3자로 된 시간대 코드 또는 시간대 오프셋(예: GMT 또는 +0200 )

  • <pubDate>Wed, 02 Oct 2002 08:00:00 EST</pubDate>
    <pubDate>Wed, 02 Oct 2002 13:00:00 GMT</pubDate>
    <pubDate>Wed, 02 Oct 2002 15:00:00 +0200</pubDate>
    


    Read the full help doc on the W3C validation service.

    JavaScript를 사용하여 RFC-822 날짜 작성



    다음은 종속성 없이 일반 JavaScript에서 날짜 문자열을 RFC-822 날짜로 변환하는 방법입니다.

    부인 성명! GMT 또는 BST의 두 시간대에 날짜를 저장하므로 코드는 이 두 시간대만 설명합니다. 자신의 시간대에 맞게 자신만의 마법을 사용해야 할 수도 있습니다.

    // add a leading 0 to a number if it is only one digit
    function addLeadingZero(num) {
      num = num.toString();
      while (num.length < 2) num = "0" + num;
      return num;
    }
    
    function buildRFC822Date(dateString) {
      const dayStrings = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
      const monthStrings = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    
      const timeStamp = Date.parse(dateString);
      const date = new Date(timeStamp);
    
      const day = dayStrings[date.getDay()];
      const dayNumber = addLeadingZero(date.getDate());
      const month = monthStrings[date.getMonth()];
      const year = date.getFullYear();
      const time = `${addLeadingZero(date.getHours())}:${addLeadingZero(date.getMinutes())}:00`;
      const timezone = date.getTimezoneOffset() === 0 ? "GMT" : "BST";
    
      //Wed, 02 Oct 2002 13:00:00 GMT
      return `${day}, ${dayNumber} ${month} ${year} ${time} ${timezone}`;
    }
    
    // date in GMT timezone
    const exampleOne = buildRFC822Date("2021-11-29T00:00:00.000Z");
    // date in BST timezone
    const exampleTwo = buildRFC822Date("2021-09-08T00:00:00.000+01:00");
    
    console.log(exampleOne);
    console.log(exampleTwo);
    


    Find the code on GitHub 저장소를 포크하고 실행하려는 경우. 지침은 README에 있습니다.

    미래의 자신을 위해 반복적으로 어려움을 겪는 모든 것을 기록하고 탐색하라는 주기적 알림입니다. 바라건대, 이 게시물을 작성한 후 미래에 RSS 피드를 구축하는 것이 저에게 평범한 항해가 될 것입니다!

    좋은 웹페이지 즐겨찾기