2016-06-14 5 views
1

나는이 시간대를 "-07 : 00"으로하고 "+05 : 00"으로 변환하려고합니다.JavaScript에서 타임 스탬프를 다른 시간대로 변환

"hours": [ 
    { 
     "from": "11:00", 
     "to": "21:00", 
     "dayOfWeek": "MONDAY" 
    }, 
    { 
     "from": "11:00", 
     "to": "21:00", 
     "dayOfWeek": "TUESDAY" 
    }, 
    { 
     "from": "11:00", 
     "to": "21:00", 
     "dayOfWeek": "WEDNESDAY" 
    }, 
    { 
     "from": "11:00", 
     "to": "21:00", 
     "dayOfWeek": "THURSDAY" 
    }, 
    { 
     "from": "11:00", 
     "to": "21:00", 
     "dayOfWeek": "FRIDAY" 
    } 
    ] 

moment.js과 같은 라이브러리를 사용하여 효율적으로 수행하는 방법은 무엇입니까? 나는 방법에 종사했지만 그것이 파에 미치지 못합니다.

function formatDates(hoursList, shopDate, userDate){ 
    var moment = require('moment'); 
    var selectedDateText = ""; 
    var convertedDateList = []; 

    for (var x = 0; x < hoursList.length; x++) { 
     var fromDate = shopDate.clone(); 
     var fromMoment = moment(fromDate.format(), "YYYY-MM-DD HH:mm Z"); 
     var fromTime = fromMoment.utcOffset(userDate.utcOffset()); 
     fromTime.hours(parseInt(hoursList[x].from.split(":")[0])); 
     fromTime.minutes(parseInt(hoursList[x].from.split(":")[1])); 
     fromTime.seconds(0); 
     fromTime.milliseconds(0); 
     console.log(fromTime.format()); 

     var toDate = shopDate.clone(); 
     var toMoment = moment(toDate.format(), "YYYY-MM-DD HH:mm Z"); 
     var toTime = toMoment.utcOffset(userDate.utcOffset()); 
     toTime.hours(parseInt(hoursList[x].to.split(":")[0])); 
     toTime.minutes(parseInt(hoursList[x].to.split(":")[1])); 
     toTime.seconds(0); 
     toTime.milliseconds(0); 
     console.log(toTime.format()); 

     var initialDay = { 
      "from": "", 
      "to": "", 
      "dayOfWeek": "" 
     }; 
     initialDay.dayOfWeek = fromTime.format("dddd").toUpperCase(); 
     initialDay.from = fromTime.format("HH:mm"); 

     if (toTime.format("DDD") != fromTime.format("DDD")) { 
      var secondaryDay = { 
       "from": "", 
       "to": "", 
       "dayOfWeek": "" 
      }; 
      initialDay.to = "24:00"; 

      secondaryDay.dayOfWeek = toTime.format("dddd").toUpperCase(); 
      secondaryDay.from = "00:00"; 
      secondaryDay.to = toTime.format("HH:mm"); 

      convertedDateList.push(secondaryDay); 
     } else { 
      initialDay.to = toTime.format("HH:mm"); 
     } 

     convertedDateList.push(initialDay); 
    } 
    console.log(convertedDateList); 
    return selectedDateText; 
} 

주요 문제는 변환 된 시간 스탬프가 2 일마다 달라질 수 있다는 것입니다. 따라서 코드의 초기 및 2 차 요일. 예 : 약 6 시간이 지나면 두 시간으로 나뉘며 월요일 오후 9 시부 터 오후 12 시까 지 화요일 오전 12 시부 터 오전 3 시까 지 추가되어야합니다. 시간이 모두 7 일 및 며칠 인 인스턴스의 경우 전환이 12AM - 3AM 및 9PM에서 12PM까지 걸리는 경우조차도 더 까다 롭습니다.

이 문제를 올바르게 해결하려면 어떻게해야합니까?

감사합니다. 시간대 관련된 잠시

+0

이궁을 찾아주세요! 시간대가 없으면 지저분한 입력을해서 죄송합니다. 아야. 이 얼마나 엉망 이죠. 'dayOfWeek'는 무엇을 참조할까요? 시작 시간 또는 종료 시간? 입력 형식을 변경할 수 있습니까? 왜냐하면 문제가 사라지기 때문입니다. –

+0

@RayToal 기본적으로 상점 영업 시간과 같습니다. "dayOfWeek"은 열리는 날을 나타냅니다. 일부 상점은 특정 일에만 영업합니다. –

+0

알겠습니다. 현지 시간입니다. dayOfWeek를 사용하여 시작 시간을 참조 할 수 있습니까? –

답변

1

는 moment.js에 모듈 의존했다 - 문서 here

+0

지역 문자열을받지 못했습니다. 오프셋 값뿐입니다. 예 : "-07 : 00" –

관련 문제