Custome Date Object With PHP-like Text-parsed Output
Dec 6, 2002
Well, this is acutally a couple different scripts. First is the custom date object myDate which retrieves pretty much every value that you'd need from a date and sets it as a property. If no argument is supplied, the current time and date is used. If you do supply an argument, you can send an existing javascript Date object, or a string that is compatible with declaring a normal javascript Date object.
The 2nd part of this script is the method getDate (and some accompanying String methods) that allow you to retrieve the date as a string by passing it a format string just like the PHP date() (http://www.php.net/manual/en/function.date.php) function accepts. The code posted below includes sufficient (I think) examples to help you understand what is going on. You will notice that I didn't duplicate EVERY code over from PHP, and a few are slightly different. Those that I left out I felt weren't very necessary, or I didn't feel like doing the algorithm for them :D.
Both myDateObj.getDate() and PHP's date() allow you to include text into the string that you don't want parsed, but each handles it differently. In PHP, you need to escape characters normally with a backslash. For getDate you need to proceed each character with a pipe "|". So, instead of$dateStr = date("Day z");as it would be in PHP, you would usevar d = new myDate();
var dateStr = d.getDate("D|a|y| z");There are more examples of how this works below.
Note: There is also a nice arrayReplace() method for strings that is handy for doing multiple replace() operations all at once, so I guess this is really like 3 handy scripts ;)
<html>
<head>
<title>test</title>
<meta http-equiv="expires" content="0">
<script type="text/javascript">
/*** First Part of Script, the custom date object ***/
function myDate(dateStr) {
if (typeof dateStr != 'undefined') {
var d = new Date(dateStr);
this.dateString = dateStr;
}
else if (typeof dateStr == 'object')
var d = dateStr;
else
var d = new Date();
var months = ['January','February','March','April','May','June','July','August','September','October','November',' December'];
var weekDays = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var monthDays = [31,28,31,30,31,30,31,31,30,31,30,31];
this.epoch = d.getTime();
this.epochS = Math.round(this.epoch / 1000);
this.year4 = d.getFullYear();
this.year2 = parseInt(this.year4.toString().substring(2));
this.leap = (this.year4 % 400 == 0) ? true : (this.year4 % 4 == 0 && this.year4 % 100 != 0) ? true : false;
if (this.leap) monthDays[1]++;
this.mnth = d.getMonth();
this.month = this.mnth + 1;
this.month_2 = leadingZero(this.month);
this.monthName = months[this.mnth];
this.monthNameShort = this.monthName.substring(0,3);
this.days = monthDays[this.mnth];
this.dy = d.getDay();
this.day = this.dy + 1;
this.dayName = weekDays[this.dy];
this.dayNameShort = this.dayName.substring(0,3);
this.date = d.getDate();
this.date_2 = leadingZero(this.date);
this.suffix = (this.date % 10 == 1 ) ? "st" : (this.date % 10 == 2) ? "nd" : (this.date % 10 == 3) ? "rd" : "th";
this.hours24 = d.getHours();
this.hours24_2 = leadingZero(this.hours24)
this.hours12 = (this.hours24 == 0) ? 12 : (this.hours24 > 12) ? this.hours24-12 : this.hours24;
this.hours12_2 = leadingZero(this.hours12);
this.minutes = d.getMinutes();
this.minutes_2 = leadingZero(this.minutes);
this.seconds = d.getSeconds();
this.seconds_2 = leadingZero(this.seconds);
this.millis = d.getMilliseconds();
this.ampm = (this.hours24 == 0) ? "am" : (this.hours24 >= 12) ? "pm" : "am";
this.GMTstring = d.toGMTString();
this.offset = d.getTimezoneOffset();
function leadingZero(num) {
return (num < 10) ? "0" + num : num.toString();
}
}
myDate.prototype.getDayOfYear = function() {
var total = 0;
var monthDays = [31,28,31,30,31,30,31,31,30,31,30,31];
if (this.leap) monthDays[1]++;
for (var i=0; i<this.mnth; total += monthDays[i++]) {}
total += this.date;
return total;
}
/*** Second part of script, the PHP-like parsed output ***/
myDate.prototype.getDate = function(str) {
var p = ['a','A','B','d','D','F','g','G','h','H','i','I','j','l','L','m','M','n','O','r','s','S','t','T','U', 'w','W','Y','y','z','Z'];
var r = new Array();
var i = 0;
var delChar = "|";
var sNull = "null".delimit(delChar)
r[i++] = this.ampm.delimit(delChar);
r[i++] = this.ampm.toUpperCase().delimit(delChar);
r[i++] = sNull;
r[i++] = this.date_2;
r[i++] = this.dayNameShort.delimit(delChar);
r[i++] = this.monthName.delimit(delChar);
r[i++] = this.hours12;
r[i++] = this.hours24;
r[i++] = this.hours12_2;
r[i++] = this.hours24_2;
r[i++] = this.minutes_2;
r[i++] = sNull;
r[i++] = this.date;
r[i++] = this.dayName.delimit(delChar);
r[i++] = (this.leap)?1:0;
r[i++] = this.month_2;
r[i++] = this.monthNameShort.delimit(delChar);
r[i++] = this.month;
r[i++] = this.offset;
r[i++] = this.GMTstring.delimit(delChar);
r[i++] = this.seconds_2;
r[i++] = this.suffix.delimit(delChar);
r[i++] = this.days;
r[i++] = sNull;
r[i++] = this.epochS;
r[i++] = this.dy;
r[i++] = sNull;
r[i++] = this.year4;
r[i++] = this.year2;
r[i++] = this.getDayOfYear();
r[i++] = sNull;
for (i=0; i<p.length; i++)
p[i] = "/" + p[i] + "(?!|)/g";
return str.arrayReplace(p, r).replace(/|/g,"");
}
String.prototype.arrayReplace = function(arrP, arrR) {
var p, s = this;
for (var i=0; i<arrP.length; i++) {
var flags = arrP[i].substring(arrP[i].lastIndexOf("/")+1);
var regex = arrP[i].substring(1,arrP[i].lastIndexOf("/"));
p = new RegExp(regex, flags);
s = s.replace(p, arrR[i]);
}
return s;
}
String.prototype.delimit = function(char) {
var s = "";
for (var i=0; i<this.length; i++) {
s += this.charAt(i) + char;
}
return s;
}
</script>
</head>
<body>
<script type="text/javascript">
/*** Example using current date/time ***/
var md1 = new myDate();
document.write(md1.getDate("l jS of F Y h:i:s A")+"<br>");
document.write(md1.getDate("T|o|d|a|y| i|s| m.d.y")+"<br>");
document.write(md1.getDate("D M j G:i:s Y")+"<br>");
document.write("It " + (md1.leap?"is":"is not") + " a leap year<br>");
document.write("The unix epoch occurred " + md1.epochS + " seconds ago");
document.write("<hr>");
/*** Example using javascript Date object as argument ***/
var d1 = new Date(2000, 01, 02, 15, 15, 15);
var md2 = new myDate(d1);
document.write(md2.getDate("l jS of F Y h:i:s A")+"<br>");
document.write(md2.getDate("T|o|d|a|y| i|s| m.d.y")+"<br>");
document.write(md2.getDate("D M j G:i:s Y")+"<br>");
document.write("It " + (md2.leap?"is":"is not") + " a leap year<br>");
document.write("The unix epoch occurred " + md2.epochS + " seconds ago");
document.write("<hr>");
/*** Example using Date object compatible string as argument ***/
var md3 = new myDate("December 10, 1978 12:23:00");
document.write(md3.getDate("l jS of F Y h:i:s A")+"<br>");
document.write(md3.getDate("T|o|d|a|y| i|s| m.d.y")+"<br>");
document.write(md3.getDate("D M j G:i:s Y")+"<br>");
document.write("It " + (md3.leap?"is":"is not") + " a leap year<br>");
document.write("The unix epoch occurred " + md3.epochS + " seconds ago");
</script>
</body>
</html>
View 4 Replies
Feb 6, 2010
I have a start date and end date text boxs. What I would like to achieve is when a submit button is clicked all the available dates between start and end dates should be displayed together with 3 check boxes next to each date (please see below). I am just wondering whether that'sachievablewith jquery, and if so, how I might be able to implement this.
Start date End date
View 8 Replies
View Related
Mar 2, 2011
I have created a servlet that does nothing more than create a XML file.i have got some JQuery code that reloads the servlet to get the XML data.This works fine and i am able to load the data i want, the problem i have is that when the data is loaded to the jsp page it displays [object Document] in front of my output.
Code JavaScript:
$(document).ready(function() {
setInterval(function() {[code]....
XML file only has one value, called row 1 with the data, "wow this is cool", but my output is: [object Document]
View 1 Replies
View Related
May 30, 2007
Lets say you have a 1000 line javascript file which is linked to an everyday html file. The browser is set, by default, cache the linked javascript file (after downloading and interpreting it).
But once it's cached and put into a temp directory on the client's computer, is the cached file in an already parsed format? Or something relative? Or is it in the same format as it was on the server-side? This would mean that the .js file is parsed each time the exact same way (as long as the file itself is not changed, deleted, or renewed on the server-side).
View 2 Replies
View Related
Feb 15, 2011
I'm trying to grab a variable from a URL and dynamically embed it into HTML code. So for instance, if I own the site test.com and I enterideo=bunny.mp4&height=720&width=480",I want the returned page to be an embedded video of bunny.mp4 at the height and width specified. I know the embed code, I just need to know how to parse the URL and write it inside of the HTML.
View 11 Replies
View Related
Apr 21, 2010
The scenario would be something like checking if an element fulfills some complex conditions, something like if(myElement.is('div.someClass[someAttribute], td.someOtherClass[someAttribute]')) ... . Is there a way to parse that string only once, maybe create some sort of "compiled" version of the check, cache it, then give it to is ? Or does jQuery cache the string after parsing it once so I don't have to do anything?
View 3 Replies
View Related
Jul 23, 2005
How do check for a date object?
<script type="text/javascript">
var d=new Date()
var arr=new Array("Jun 5",d,"Mar 16")
for(i=0;i<arr.length;i++){
if(arr[i] != Date()) // is string or is not date object
document.write(arr[i] + "<br>")
}
</script>
View 1 Replies
View Related
Apr 22, 2009
Here is the string:
Jim Peterson 21 | Ed N 31 | Mary Joe 24 | jennifer baley 22
I am trying to grab all the text other than the "|" and output that to a text field (or global variable)..
How can we do this? I can't seem to find any scripts that show me exactly how to delete all those "|"...
is there a way to put "jim peterson 21" and "ed n 31", etc.. into their own variables?
View 2 Replies
View Related
Nov 4, 2009
I've used a function to out put two lists, - loco numbers and loco names - which I want to display side by side on a page, either in two adjacent divs or in a two-column table so that viewers can straight away reference the numbers with the associated names.
I can output it as a document.write - but that just results in one continuous list of numbers and then names. explain how to output the two lists in two separate divs.
View 3 Replies
View Related
Jul 20, 2005
According to the Safari browser the world began on "Fri Dec 13 1901 15:45:52 GMT-0500", but I need to be able to get around this limitation.
I am interested in dates from 1500 to 1901, as far as I can determine, there are 14 possible calendar variations.
Year starts on Sun, Mon..... Leap year starts on Sun, Mon..
I can label these early year "types" as a number between 0 and 13.
Let's say 2005 is type 5, and that 1655 is too. (In both years Jan 1 falls on a Saturday)
I'm trying to create a function that will identify the "type" of year.
function getYearType(year){
return Number // number between 0 and 13
}
View 7 Replies
View Related
Jan 23, 2011
I have script that is dynamically generating updates on my page. The code is this:
Code:
<a id="cc_stream_info_song" target="new">Loading...</a>
The id tag links to a js script on a remote server and replaces the "loading" text with the song title of the currently playing song on my shoutcast server, and refreshes this every 60 seconds. I want to be able to grab this song title and put it in a php variable. I don't have access to the remote server, so I don't have any other way of getting the updated song title outside of this little snippet. I tried using php output buffering but all that does is grab the html I posted above, and not the javascript-generated song title.
View 1 Replies
View Related
Jun 27, 2010
I'm using this progress bar from http://www.dynamicdrive.com/dynamici...rogressbar.htm and I want to be able to display some text after the bar finishes loading.
I figured out out to get it to output the text, but it loads in a new page. I want to get it to load where the bar is located. Here's how I'm placing the code ...
That shows the bar in the middle of my table, when it finishes it just opens to a new page saying hello world at the top. Is there a way to get it to spit out hello world in place of the bar, or at least in that table?
View 4 Replies
View Related
Sep 24, 2010
I would like for the information selected in the list boxes to automatically build/generate text in the body of the page below the text boxes. Please see the attached image for an idea of what I mean.As more boxes are selected, the rest of the Part Number is generated.This is somewhat similar to chained list box, but instead of generating a 2nd list box, I want each list box to generate into it's own cell at the bottom of the page.
View 2 Replies
View Related
Oct 18, 2011
I am trying to create a 'document name generator' to standardise our document naming. I have created a template using cascading drop down menus, which is what I am after so far. how to output the results of my dropdown in to a text box. Idealy I would like to have the name as a string. For example, selecting Business - Projects - Test3 and typing in the date would result in a text box containing all three results "Business Projects Test3 18/10/2011"
HTML Code:
}
<body>
<script type="text/javascript">
//Applies cascading behavior for the specified dropdowns
function applyCascadingDropdown(sourceId, targetId) {
var source = document.getElementById(sourceId);
var target = document.getElementById(targetId);
[Code]....
View 3 Replies
View Related
May 29, 2007
Am i breaking any rules when I loop dates like
// Determine Memorial Day
intFlag = 0;
memDayHol = new Date (currentYear, 4, 31);
while (intFlag == 0) {
if (memDayHol.getDay() == 1) {intFlag =1;}
else {memDayHol = memDayHol - 1;}
}
I can find no docs that one can use the '+' operator directly on a date
object, and it assumes adding/subtracting a day(s). Is this deprecated
code?
View 10 Replies
View Related
Jul 9, 2010
How to extend the constructor for the date object of the javasccript so that whenever a call is made to the constructor, I want to perform a particular action? Basically how to define wrappers for default javascript methods or objects like Date() so that I can perform some action and then invoke the original method? So basically if I have something like var a = new Date(); I want it to (say) alert the value of the date everything Date() is called and then execute the default date constructor.
View 3 Replies
View Related
Feb 7, 2011
The goal is for selectedDay to be assigned the value of the system variable Mainpackage.subclass0.subclass1.firstDay and then incremented by two days. Mainpackage.subclass0.subclass1.firstDay needs to be unchanged.
Important system variable in red. To be 'manipulated and used' variable in green. Even with an intermediary, third, dummy variable it doesn't work:
Console log is:
It doesn't work in my webapp : All variables change at the same time.
View 4 Replies
View Related
May 3, 2010
I have a question about what the most certain method to obtain the correct UTC time in javascript is.On my forum, there is a countdown clock, that should show the same amount, wherever the user is located. I use UTC in javascript to get the current time, but I have trouble getting consistent results.I have tried two methods:Method 1:
Code:
var d = new Date();
var localTime = d.getTime();
[code]......
View 7 Replies
View Related