JSON刮痧 - 通过Javascript将军事时间转换为标准时间

时间:2011-12-28 15:54:35

标签: javascript json datetime screen-scraping

我正在从网址抓取JSON数据。时间是军事时间,我想知道一旦我在客户端检索将其转换为标准时间是否有办法。

这是JSON:

[
  {
    SaturdayClose: "21:00",
    SaturdayOpen: "10:00",
    SundayClose: "12:00",
    SundayOpen: "18:00",
    WeekdayClose: "21:00",
    WeekdayOpen: "10:00"
  }
]

这是我的index.html:

    <p>
        Sun: ${ SundayOpen }a - ${ SundayClose }p Mon - Sat: ${ SaturdayOpen }a ${ SaturdayClose }p
    </p>

这会返回这种丑陋:

太阳:18:00a - 12:00p周一至周六:10:00a 21:00p

我宁愿回复:

太阳:6:00a - 12:周一至周六:10:00a - 9:00p

5 个答案:

答案 0 :(得分:4)

使用日期脚本当然会起作用。如果你只需要从24 hour clock转换为12小时,你可以简单地减去时间并按照指示添加时间段。

修改

我添加了两次作为测试,00:3012:30 am12:15,应该是12:15 pm。请参阅下面的新编辑。

var times = {
    SaturdayClose: "21:00",
    SaturdayOpen: "10:00",
    SundayClose: "12:00",
    SundayOpen: "18:00",
    WeekdayOpen: "10:00",
    WeekdayClose: "21:00",
    WeekendOpen: "12:15",
    WeekendClose: "00:30"
};

console.log(times);

for (var time in times) {
    var parts = times[time].split(':'),
        hour = parts[0],
        minutes = parts[1];

    if (hour > 12) {
        times[time] = (hour - 12) + ':' + minutes + ' pm';
    } else if (hour == 0) {
        times[time] = 12 + ':' + minutes + ' am';
    } else if (hour == 12) {
        times[time] += ' pm';
    } else {
        times[time] += ' am';
    }
}

console.log(times);

http://jsfiddle.net/tqXCL/3/

转换后会给您以下内容:

SaturdayClose "9:00 pm" 
SaturdayOpen  "10:00 am"    
SundayClose   "12:00 pm"    
SundayOpen    "6:00 pm" 
WeekdayClose  "9:00 pm" 
WeekdayOpen   "10:00 am"    
WeekendClose  "12:30 am"    
WeekendOpen   "12:15 pm"

答案 1 :(得分:3)

如果你想使用html而不是json,你可以这样做。

dateEl.innerHTML=dateEl.innerHTML.replace(/(\d\d)(:\d\d[ap])/g,function(m,hour,suffix) {
  return (+hour+11)%12+1+suffix;
});

请注意,这假设您已将dateEl设置为适当的元素,并且该元素不包含您不想转换的其他时间。

答案 2 :(得分:1)

看一下date.js。它充满了方便的日期转换功能。

答案 3 :(得分:1)

DEMO

window.onload=function() {

  var re=/(\d{2}:\d{2}[ap])/gi
  var times = document.getElementById('times').innerHTML;
  var mil = times.match(re);
  for (var i=0;i<mil.length;i++) {
    var parts = mil[i].split(":");
    var hours = parseInt(parts[0],10);
    if (hours > 12) parts[0]=hours-=12;
    else if (hours==0) parts[0]=12
    times=times.replace(mil[i],parts.join(":"))
  }
  document.getElementById('times').innerHTML = times;
}

答案 4 :(得分:0)

“军事时间”(也称为24小时制)可通过简单的模数12轻松转换为12小时。

JSFiddle example:

var obj = {
    SaturdayClose: "21:00",
    SaturdayOpen: "10:00",
    SundayClose: "12:00",
    SundayOpen: "18:00",
    WeekdayClose: "21:00",
    WeekdayOpen: "10:00"
}, prop, $output = $('#output'), time, x, meridiem;

for (prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        x =+obj[prop].substr(0, 2);

        if (x > 12) {
            x = x % 12;
            meridiem = "pm";
        } else {
            meridiem = "am";
        }

        time = x + ":00" + meridiem;

        $output.append("<li>" + prop + " " + time + "</li>");
    }
}