SkillAgentSearch skills...

Marsdatejs

A Javascript Date object for Mars timekeeping and Earth-Mars date/time conversion.

Install / Use

/learn @aresastro/Marsdatejs
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

MarsDate.js

A Javascript Date object for Mars timekeeping and Earth-Mars date/time conversion.

Updates in 0.0.4

  • 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.

Todo

  • Add Date.prototype.marsDate to allow easy conversion between Date and MarsDate objects.

Usage

The MarsDate object can be used in a similar fashion to the standard Javascript Date object.

Initialisation

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";

###Usage 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

###Timezones 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)

Custom Formatting

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.

View on GitHub
GitHub Stars10
CategoryDevelopment
Updated8mo ago
Forks2

Languages

JavaScript

Security Score

72/100

Audited on Jul 26, 2025

No findings