views:

150

answers:

2

Hi, I have a interesting question:

I want to split the year into 4 quarters. What is the idea,

A quarter can be different:

The HTML Code:

<div class="quarterBody">
    <span>04-29-2010</span>
    <span>06-29-2010</span>
    <span>08-29-2010</span>
</div>

jQuery (javascript) is total wrong, I hope that w:

       $(document).ready(function(){

            var quarter1 = to make interval (01-01-2010  to 03-31-2010);
            var quarter2 = to make interval (03-01-2010  to 06-31-2010);
            var quarter3 = to make interval (06-01-2010  to 09-31-2010);
            var quarter4 = to make interval (09-01-2010  to 12-31-2010);
                              ...

            $(".quarterBody span").each(function(){
                var date = Date.parse($(this).text());

                //to apply some magic code 

                $(this).addClass(quarterNumber);

            });
        });

OUTPUT:

<div class="quarterBody">
        <span class="Quarter1">02-29-2010</span>
        <span class="Quarter2">04-29-2010</span>
        <span class="Quarter3">08-29-2010</span>
             ...
    </div>

I know right now it is a stupid way, but I hope that somebody can help me, or suggest an idea how to do that in a better way!!

Thanks!

+3  A: 

Instead of specifying an interval, you can simply get the month and calculate the quarter from that:

$(function(){
  $('.quarterBody span').each(function() {
    var month = parseInt($(this).text().substr(0,2), 10);
    var quarter = Math.floor((month - 1) / 3) + 1;
    $(this).attr('class', 'Quarter' + quarter);
  });
});

Notice:

  • I corrected the spelling on "quarterBody" and "Quarter1" through "Quarter4".
  • This assumes the date format that you showed, with the first two digits always being the month.
  • When parsing the string containing the month, you have to specify the base (10), otherwise months '01' to '09' will be parsed as octal (base 8), and '08' and '09' are not valid octal numbers.
Guffa
why not first parse it creating a Date object and them retrieve the month from it? It's safer, considering that date formats may change.
Bruno Brant
@Bruno: Yes, that's an option. However, it's not always safer as the date format that the browser uses might not match the format that the server produces.
Guffa
+2  A: 

Date.js is an good library for handling date-related issues in JavaScript. Take a look at it. It has come in handy for me when building calendar controls.

Diodeus