A Javascript Date object for Mars timekeeping and Earth-Mars date/time conversion.
- Completed setTimezone() function.
- Implemented String input.
- Added the placeholder
N
to get the ISO 8601 numeric representation of the sol of the week. - Now translation friendly.
- Added minified version.
- Better Documentation.
- Add
Date.prototype.marsDate
to allow easy conversion betweenDate
andMarsDate
objects.
The MarsDate object can be used in a similar fashion to the standard Javascript Date
object.
You may initialise a MarsDate
object in one of the following ways:
//As undefined which will assume the current date and time in MTC.
var now = new MarsDate();
//With a standard Date object which will convert from a date on Earth to a Mars date.
var dateFromEarthDate = new MarsDate(new Date(1230812388499));
//With a Mars Solar Date MSD based upon the telescopic epoch of 1609.
var dateFromMSD = new MarsDate("172387.12398");
//With Mars milliseconds elapsed since Unix epoch.
var dateFromMillis = new MarsDate(1239182398766);
//With a properly formatted Mars date (year*, month*, date*, hour, minute, second, millisecond) * = required.
var dateFromParams = new MarsDate(217, 3, 14, 12, 16, 18, 261);
//Or with a properly formatted Mars date and time string
var dateFromString = "Jov Sag 12 154";
var dateTimeFromString = "Jov Sag 12 154 12:34:50";
After initialiing a MarsDate object, you can then do a variety of things with it:
//Let's set a date first - In this case, Elon Musk's birthday.
var d = new MarsDate(new Date(1971, 6, 28));
//We can now export this date in a variety of formats:
console.log(d); //Mer Kar 25 192 14:23:45 AMT+0000 (AMT)
console.log(d*1); //48151066900
console.log(a.toJSON()); //192-15-25T14:23:45.787A
console.log(a.toString()); //Mer Kar 25 192 14:23:45 AMT+0000 (AMT)
console.log(a.toDateString()); //Mer Kar 25 192
console.log(a.toISOString()); //192-15-25T14:23:45.787A
console.log(a.toMTCString()); //Mer, 25 Kar 192 14:23:45 AMT
You can set your MarsDate
object to one of many timezones between "-1100" to "+1200". For a full list of timezones, see: http://www.aresastro.com/2016/03/ares-time-zone-system
d.setTimezone("+1100");
console.log(d); //Jov Kar 26 192 01:23:45 AMT+1100 (CET)
There are also a variety of options for custom date formatting.
//We can also use a custom format like so:
console.log(a.formatDate("yyy mm dd HH:MM:ss")); //192 15 25 14:23:45
Custom date formats may consist of the following elements:
Mask | Description |
---|---|
d |
Sol of the month as digits; no leading zero for single-digit days. |
dd |
Sol of the month as digits; leading zero for single-digit days. |
ddd |
Sol of the week as a three-letter abbreviation. |
dddd |
Sol of the week as its full name. |
m |
Month as digits; no leading zero for single-digit months. |
mm |
Month as digits; leading zero for single-digit months. |
mmm |
Month as a three-letter abbreviation. |
mmmm |
Month as its full name. |
y |
Year as digits; no leading zero for less than four-digit years. |
yy |
Year as last two digits; leading zero for years less than 10. |
yyyy |
Year represented by four digits; leading zero for years less than 1000. |
h |
Hours; no leading zero for single-digit hours (12-hour clock). |
hh |
Hours; leading zero for single-digit hours (12-hour clock). |
H |
Hours; no leading zero for single-digit hours (24-hour clock). |
HH |
Hours; leading zero for single-digit hours (24-hour clock). |
M |
Minutes; no leading zero for single-digit minutes. |
MM |
Minutes; leading zero for single-digit minutes. |
N |
ISO 8601 numeric representation of the sol of the week. |
o |
AMT/MTC timezone offset, e.g. -0700 or +0300. |
s |
Seconds; no leading zero for single-digit seconds. |
ss |
Seconds; leading zero for single-digit seconds. |
l |
Milliseconds; gives 3 digits. |
L |
Milliseconds; gives 2 digits. |
t |
Lowercase, single-character time marker string: a or p. |
tt |
Lowercase, two-character time marker string: am or pm. |
T |
Uppercase, single-character time marker string: A or P. |
TT |
Uppercase, two-character time marker string: AM or PM. |
W |
ISO 8601 week number of the year, e.g. 63 |
Z |
Ares timezone abbreviation, e.g. AMT or COT. |
(c) 2016 Ares Astro [aresastro.com][areasastro], MIT license.