2012-07-26 74 views
2

我在json中獲取像這樣的日期時間2012-02-06 16:30,2012-02-08 16:45,2012-02-10 16:30。
這是我的代碼。如何在json中分割日期和時間?

<script type="text/javascript"> 
<?php if($this->Date) : ?> 
var date = JSON.parse('<?=$this->Date?>'); 
$.each(date, function(index, value) { 
    switch(index) { 
     case 0: 
     $("#Date").val(value); 
     $("#Time").val(value); 
     case 1: 
     $("#Date1").val(value); 
     $("#Time1").val(value); 
     case 2: 
     $("#Date2").val(value); 
     $("#Time2").val(value); 
    } 
}); 
<?php endif; ?> 
</script> 

這裏我想通過日期提交日期時間字段。 請幫我

+0

你確定你得到'$這個 - > Date'作爲JSON字符串 – swapnilsarwe 2012-07-26 13:37:58

+0

*我不希望生活在這個星球上了... *您'開關'塊裏面有*巨大的* WTF。你需要的是$('#Date'+ index)';同樣的'時間'。那麼你只需要'索引== 0'的情況下,如果你不能將這些字段重命名爲'#Date0'/'#Time0' – ThiefMaster 2012-07-26 13:43:10

+0

嗨swapnilsarwe,是的,我越來越json字符串.. – kiran 2012-07-26 13:43:53

回答

2

首先,我想的#Date#Time的ID更改爲#Date0#Time0讓事情變得均勻。這樣,你可以完全擺脫你的switch聲明,並做這樣的事情,這是更少的代碼,並可擴展更多的項目,而無需更改代碼。

您的問題的關鍵是split()函數將您的日期字符串拆分成一個片段數組。

<script type="text/javascript"> 
    <?php if($this->Date) : ?> 
     var date = JSON.parse('<?=$this->Date?>'); 
     $.each(date, function(index, value) { 

      // Split the Date/Time string into an array with two items 
      //(0=date, 1=time) 
      var pieces = date.split(' '); 

      $("#Date"+index).val(pieces[0]); 
      $("#Time"+index).val(pieces[1]); 
     }); 
    <?php endif; ?> 
</script> 
+0

嗨Dutchie,當我分裂日期和時間我越來越喜歡這個2012-02-06,16:30。我能做什麼? – kiran 2012-07-26 13:49:26

+0

是不是你在找什麼?你看到它用逗號寫出來,因爲它是兩個項目的數組。你有更新這些行嗎? '$(「#Date」+ index).val(pieces [0]);'用'pieces [0]'替換'value'? – Dutchie432 2012-07-26 13:54:07

+0

感謝它的工作很好.. – kiran 2012-07-26 14:01:26

1
var date = '2012-02-06 16:30'; 
var date_parts = date.split(' '); 
# date_parts[0] <- date 
# date_parts[1] <- time 
+0

不應該是'date_parts [0]'和'date_parts [1]' – Dutchie432 2012-07-26 13:39:06

+0

感謝注意到。固定它已經 – 2012-07-26 13:39:54

1

這可能工作:

var new_arr = []; 
    var a = "2012-02-06 16:30,2012-02-08 16:45,2012-02-10 16:30".split(","); 
    for(var i =0; i<a.length; i++) 
    { 
     new_arr.push(a[i].split(' ')); 
    } 
    console.log(new_arr); 
+0

什麼!?這段代碼甚至沒有做任何事情。循環次數與字符串中的字符數相同,並嘗試將每個字符拆分爲由逗號分隔的數組?這不僅解決了海報的問題,而且回答了完全不同的問題。 – Dutchie432 2012-07-26 13:42:33

+0

@ Dutchie432 - 這就是我第一眼想到的,但第一行最後有'.split()'。因此,shreedhar將這個問題解釋爲我聽到的方式,比如最初的字符串需要先分成三個日期/時間。 – nnnnnn 2012-07-26 13:43:00

+0

夠公平的。那麼,爲什麼他會在第二次分裂陳述中以逗號分割呢?仍然沒有意義。它應該是一個空間。 – Dutchie432 2012-07-26 13:43:39

1

如果字符串包含你只可以將其轉換爲Date對象有效日期。

d = new Date("2012-02-06 16:30") 

那麼你應該有權訪問Date對象的所有方法。

  • 的getTime() - 因爲1/1/1970毫秒數@ 12:00 AM
  • getSeconds() - 秒數(0-59)
  • getMinutes() - 分鐘數( 0 - 09)
  • getHours() - 小時數(0-23)
  • getDay() - 星期幾(0-6)。 0 =星期日,...,6 =星期六
  • GETDATE() - 月(0-31)
  • 得到月()日 - 月(0-11)
  • 和getFullYear(數) - 的四位數年份(1970-9999)
+0

這比只對字符串執行split()更好嗎?這些值只是放置在文本框中。 – Dutchie432 2012-07-26 13:52:17

+0

只是在談論另一種選擇。它可能會在未來給你更多的靈活性。 – novus42 2012-07-26 14:09:01

相關問題