2014-12-15 1 views
0

나는 순수한 JS라는 Google Script를 사용하고 있습니다. 나는 for 루프를 생성 한문자열을 교체하거나 배열을 통해 제거

[Tue Dec 23 2014, 
816.43, 
Tue Jan 28 2014, 
729.43] 

: 그것은 다음과 같습니다 그래서 시간과 GMT 부품을 제거 할 날짜를 포맷 할

[Tue Dec 23 00:00:00 GMT+00:00 2014, 
816.43, 
Tue Jan 28 00:00:00 GMT+00:00 2014, 
729.43] 

:

나는 다음과 같은 배열을 .replace을 사용하여 00:00:00GMT+00:00을 (를) data

라고하는 내 배열에 단순히 아무것도 표시하지 마십시오 (별칭 "").
var arrayLength = data.length; 
    for (var i = 0; i < arrayLength; i++) { 
    var newData = data[i].replace("00:00:00", ""); 
    } 

나는 다음과 같은 오류가 발생합니다 :

TypeError: Cannot find function replace in object Tue Dec 23 2014 00:00:00 GMT-0000 (GMT) 
+0

날짜 개체 또는 문자열 배열이 포함되어 있습니까 갖고있는 것 같다 날짜의 배열을 정상화 할 수있는 방법인가? 또한, 당신은 숫자 엔트리를 건너 뛰지 않는 것으로 보이는데, 확실히 'replace' 메소드가 없습니다. (즉,'i ++'대신'i + = 2 '를 사용하십시오.) – apsillers

+1

아마 문자열 배열을 가지고 일하는 것이 아니라 Date 객체의 배열을 사용하는 것입니다. – Pointy

+0

아마 Date 객체를 포함 할 것입니다. – brso05

답변

0

당신이 날짜 문자열을 가지고 있고 형식이 일치하는 경우, 당신은 같은 useing 포맷 할 수 있습니다 :

var s = 'Tue Dec 23 00:00:00 GMT+00:00 2014'; 

var m = s.match(/^\w{3} \w{3} \d+|\d+$/g); 
if (m) console.log(m.join(' ')); 

또는

var n = s.split(' '); 
console.log([n[0],n[1],n[2],n[5]].join(' ')); 

또는

당신이 날짜 개체가과 영업 이익에서 제안 형식으로 출력 그들에게하고자하는 경우 1,363,210
console.log(n[0] + ' ' + n[1] + ' ' + n[2] + ' ' + n[5]); 

, 당신은 같은 간단한 기능을 쓸 수 있습니다 :

function formatDate(d) { 
    var days = ['Sun','Mon','Tue','Wed','The','Fri','Sat']; 
    var months = ['Jan','Feb','Mar','Apr','May','Jun', 
       'Jul','Aug','Sep','Oct','Nov','Dec']; 
    function z(n){return (n<10?'0':'') + n} 
    return days[d.getDay()] + ' ' + months[d.getMonth()] + ' ' + 
     z(d.getDate()) + ' ' + d.getFullYear(); 
} 

console.log(formatDate(new Date(2014,11,2))); // Tue Dec 02 2014 
0

을하면 (영업 이익의 댓글에서 항)을 시간을 무시하면서 두 날짜를 비교할 필요가있는 가장 간단한 방법은 코드를 작성하여이를 수행하는 것입니다. 이 문제에 접근하는 몇 가지 방법이 있습니다 : 당신은 시간이 00:00:00.0000

  • 수 있도록 당신은 두 날짜를 비교하는 함수를 쓸 수있는 날짜를 절단하는 함수를 작성할 수 있습니다

    • 은 무시하고, 시간 외 하루

    귀하가 선택하는 접근 방식은 귀하의 응용 프로그램에 따라 다릅니다.

    function sameDay(d1, d2) { 
        return d1.getFullYear() === d2.getFullYear() && 
         d1.getMonth() === d2.getMonth() && 
         d1.getDate() === d2.getDate(); 
    } 
    

    정확히 자정에 다시 설정 한 시간 시계와 함께 새 Date 인스턴스를 만들려면 :

    시간 무시, 두 날짜를 비교하려면

    function midnightOf(d) { 
        return new Date(d.getFullYear(), d.getMonth(), d.getDate()); 
    } 
    
  • 0

    이 시도 -

    var arrayLength = data.length; 
        for (var i = 0; i < arrayLength; i++) { 
        var newData = data[i].toString().replace("00:00:00", ""); 
        } 
    

    '데이터'배열의 요소는 기본적으로 Date 개체라고 생각합니다. 그들은 문자열이 아닙니다.

    0

    음이 당신에게 당신이 준 정확한 형식을 제공하지 않습니다,하지만 어쩌면 그것은이 켜지지 아니다 (그리고 객체 덤프의 경우, 출력은 어쨌든 다를 수 있습니다) : 그것은 당신을 가정 것

    for (var i = 0, arrayLength = data.length; i < arrayLength; i++) { 
        if (data[i] instanceof Date) { 
         data[i] = [data[i].getDay(), data[i].getMonth(), data[i].getYear()].join(' '); 
        } 
    } 
    

    ' Date 객체를 처리하고 그 객체를 사용합니다. object's methods. 또한 date 객체를 string으로 변환하지만 설명에서이 경우에는 상관하지 않는다고 가정했습니다. 여기

    0

    당신이

    var arrayLength = data.length; 
    for (var i = 0; i < arrayLength; i++) { 
        data[i].setHours(12,0,0,0); // set to noon in case we are crossing DST 
    } 
    
    관련 문제