Ruby datetime을 JS로 변환

4335 단어
Ruby datetime 개체를 JS 날짜 개체로 변환하는 방법을 자세히 살펴보겠습니다. 최신 애플리케이션에 React JS를 사용했습니다. 앱의 기능 중 하나는 지역 리틀 리그 경기 일정입니다. 저는 React JS 프런트엔드와 함께 Ruby 백엔드를 사용했습니다.

물론 경기 일정에 있어 경기 시간은 매우 중요합니다. 별 문제 없을 거라 생각했습니다. 프런트엔드에서 게임을 구현하기 시작했을 때 백엔드에서 시간이 떨어져 있음을 알았습니다. 내 프로세스를 단계별로 살펴보겠습니다.
  • 우선 저는 다양한 게임을 가지고 있으므로 해당 게임을 통해 매핑하고 게임 일정에 대한 관련 정보를 가져와야 합니다. 지금은 시간 측면에만 집중하겠습니다. React의 간단한 맵 기능으로 이 작업을 수행했습니다.

  • 
    this.props.games.map(game => game.date)
    
    


    여기서 문제는 읽을 수 없는 문자열을 얻는다는 것입니다.

    2021-06-12T14:00:00.000Z
    


    2021년 6월 12일 14:00(오후 2:00)에 확인하실 수 있습니다. 이것은 정확한 날짜이므로 이제 보기 좋게 만들기 위해 JS로 변환하기만 하면 됩니다.

  • Moment.js를 입력합니다. Ruby 시간을 JS 시간으로 변환하는 매우 간단한 방법입니다. React JS에서 사용하는 방법은 다음과 같습니다.
    먼저 응용 프로그램에 설치하십시오.
  • npm 설치 순간 --저장
    또는
  • 원사 추가 모멘트

  • 그런 다음 순간을 가져옵니다.


    
    import Moment from 'moment';
    
    


    이제 game.date를 가져와 Moment 함수의 인수로 사용합니다.

    
    Moment(game.date).format('MMMM DD,  LT')
    
    


    다음은 우리가 돌려받는 것입니다.

    
    June 12, 6:00 AM
    
    




    이 문제를 해결하는 것은 간단하지만 인터넷 검색 중에 방법을 찾기가 매우 어렵습니다.
  • 이제 올바른 형식으로 시간을 보냈으므로 올바른 시간인 오후 2시를 읽는 방법을 알아내야 합니다.

  • 바로 건너뛰겠습니다.

    Ruby가 백엔드에서 프런트엔드로 datetime 객체를 보낼 때 협정 세계시(Coordinated Universal Time)인 UTC 시간이 됩니다. 시간대가 일치하지 않으면 제대로 찾아오신 것입니다.

    Moment.js에는 시간대 함수, 일반 모멘트 함수 및 parseZone 함수를 사용할 수 있는 많은 기능이 있습니다.

    우리가 원하는 것은 parseZone 함수입니다. 이것이 Ruby datetime 개체로 수행하는 작업은 들어오는 시간이 걸리고 현지 시간대로 변환하지 않고 정확한 시간을 사용하는 것입니다. 알래스카에 있는 저에게는 UTC보다 8시간 빠르기 때문에 시간이 계속 잘못 돌아오는 것입니다. parseZone은 어떤 변환도 원하지 않는다고 말합니다. Ruby 백엔드가 정확히 무엇을 말하는지 보여주세요.

    이것은 여전히 ​​Moment.js의 기능이므로 위의 모든 것이 필요합니다. 이것이 최종 함수의 모습입니다.

    Moment.parseZone(game.date).format('MMMM DD,  LT')
    


    우리에게 줄 것입니다

    June 12, 2:00 PM
    


    정확히 우리가 찾고 있는 것!

    Moment.js 문서에는 또한 수많은 서식 옵션이 있으며 이것이 사용 중인지 확실히 확인해야 할 사항입니다!

    좋은 웹페이지 즐겨찾기