2012-07-26 75 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

相关问题