Earthian Calendar

Discussion and information relevant to creating special missions, new ships, skins etc.

Moderators: winston, another_commander

Post Reply
User avatar
Wildeblood
---- E L I T E ----
---- E L I T E ----
Posts: 2650
Joined: Sat Jun 11, 2011 6:07 am
Location: Nova Hollandia
Contact:

Earthian Calendar

Post by Wildeblood »

Wildeblood wrote: Fri Apr 11, 2025 2:32 pm
OXP concept: "Earthian Calendar" - adds a Gregorian calendar to the manifest screen, for make benefit of Followers of the Old Ways.
Seems like a simple enough request.
Wolfgang Wildeblood, esq. wrote:
Help me create some javascript. I want code that will take an epoch date, like 1950-01-01, and a day count, like 20009847 and determine the new date.
ChatGPT wrote:
Sure! You can achieve this by writing a JavaScript function that takes:

1. An epoch date in the format `"YYYY-MM-DD"`.
2. A day count (number of days to add).

The function will calculate the resulting date by adding the day count to the epoch date.

Here's the JavaScript code to do that:

Code: Select all

function calculateDateFromEpoch(epochDateStr, dayCount) {
  // Convert the epoch date string into a Date object
  const epochDate = new Date(epochDateStr);

  if (isNaN(epochDate)) {
    throw new Error("Invalid epoch date format. Use YYYY-MM-DD.");
  }

  // Add the day count in milliseconds (1 day = 86400000 ms)
  const resultDate = new Date(epochDate.getTime() + dayCount * 86400000);

  // Format result as YYYY-MM-DD
  const year = resultDate.getUTCFullYear();
  const month = String(resultDate.getUTCMonth() + 1).padStart(2, '0'); // Months are 0-based
  const day = String(resultDate.getUTCDate()).padStart(2, '0');

  return `${year}-${month}-${day}`;
}

// Example usage:
const epoch = "1950-01-01";
const dayCount = 20009847;

const newDate = calculateDateFromEpoch(epoch, dayCount);
console.log("Resulting Date:", newDate);
Notes:
- This uses UTC to avoid timezone-related quirks.
- It pads months and days to ensure the result is in the format `YYYY-MM-DD`.

Let me know if you want it to handle negative day counts or if you need it integrated into HTML or another app!
Wolfgang Wildeblood, esq. wrote:
Help me create some javascript. I want code that will take an epoch date, like 1950-01-01, and a day count, like 20009847 and determine the new date.
Qwen2.5-Max wrote:
To calculate a new date based on an epoch date (e.g., `1950-01-01`) and a given day count (e.g., `20009847`), you can use JavaScript's `Date` object. The approach involves:

1. Converting the epoch date into a `Date` object.
2. Adding the given number of days to the epoch date.
3. Returning the new date.

Here’s the JavaScript code to achieve this:

Code: Select all

function calculateNewDate(epochDate, dayCount) {
    // Step 1: Parse the epoch date string into a Date object
    const epoch = new Date(epochDate);

    // Check if the epoch date is valid
    if (isNaN(epoch.getTime())) {
        throw new Error("Invalid epoch date provided.");
    }

    // Step 2: Convert the day count into milliseconds (1 day = 24 * 60 * 60 * 1000 ms)
    const millisecondsInADay = 24 * 60 * 60 * 1000;
    const totalMillisecondsToAdd = dayCount * millisecondsInADay;

    // Step 3: Add the milliseconds to the epoch date
    const newDate = new Date(epoch.getTime() + totalMillisecondsToAdd);

    // Step 4: Return the new date as a formatted string or Date object
    return newDate.toISOString().split('T')[0]; // Returns in YYYY-MM-DD format
}

// Example usage:
const epochDate = "1950-01-01"; // Epoch date
const dayCount = 20009847;      // Number of days to add

try {
    const result = calculateNewDate(epochDate, dayCount);
    console.log("The new date is:", result);
} catch (error) {
    console.error(error.message);
}
Explanation of the Code:
1. Parsing the Epoch Date:
- The `new Date(epochDate)` converts the input string (e.g., `"1950-01-01"`) into a JavaScript `Date` object.
- If the input date is invalid, `isNaN(epoch.getTime())` will detect it and throw an error.

2. Converting Days to Milliseconds:
- Since JavaScript's `Date` object works with milliseconds, we convert the day count into milliseconds by multiplying it by the number of milliseconds in a day (`24 * 60 * 60 * 1000`).

3. Adding Milliseconds to the Epoch Date:
- Using `epoch.getTime()`, we get the timestamp of the epoch date in milliseconds.
- Adding the calculated milliseconds gives us the timestamp for the new date.

4. Formatting the Output:
- The `toISOString()` method returns the date in ISO 8601 format (e.g., `"YYYY-MM-DDTHH:mm:ss.sssZ"`).
- We split the string at `'T'` to extract only the date portion (e.g., `"YYYY-MM-DD"`).

Example Output:
For the input:

Code: Select all

const epochDate = "1950-01-01";
const dayCount = 20009847;
The output will be:

Code: Select all

The new date is: 7752-11-29
Notes:
- The function assumes the epoch date is provided in the format `YYYY-MM-DD`. If the format differs, additional parsing logic may be required.
- The function handles large day counts without issue because JavaScript's `Date` object supports a wide range of dates.

Let me know if you need further clarification or enhancements!
"There are large, white swans, and there are small, black swans," he explained, "But there are no medium-sized swans, and there are no grey swans. The non-existence of grey swans mitigates against belief in Mr Darwin's theory."
User avatar
Cholmondely
Archivist
Archivist
Posts: 5785
Joined: Tue Jul 07, 2020 11:00 am
Location: The Delightful Domains of His Most Britannic Majesty (industrial? agricultural? mainly anything?)
Contact:

Re: Earthian Calendar

Post by Cholmondely »

Wildeblood wrote: Sat Apr 12, 2025 6:12 am
Wildeblood wrote: Fri Apr 11, 2025 2:32 pm
OXP concept: "Earthian Calendar" - adds a Gregorian calendar to the manifest screen, for make benefit of Followers of the Old Ways.
Seems like a simple enough request.
Dear Wolfgang. Not only is it simple enough, but it has already been done!

Image
Comments wanted:
Missing OXPs? What do you think is missing?
Lore: The economics of ship building How many built for Aronar?
Lore: The Space Traders Flight Training Manual: Cowell & MgRath Do you agree with Redspear?
User avatar
Wildeblood
---- E L I T E ----
---- E L I T E ----
Posts: 2650
Joined: Sat Jun 11, 2011 6:07 am
Location: Nova Hollandia
Contact:

Re: Earthian Calendar

Post by Wildeblood »

Cholmondely wrote: Mon Apr 14, 2025 10:49 pm
Wildeblood wrote: Sat Apr 12, 2025 6:12 am
Wildeblood wrote: Fri Apr 11, 2025 2:32 pm
OXP concept: "Earthian Calendar" - adds a Gregorian calendar to the manifest screen, for make benefit of Followers of the Old Ways.
Seems like a simple enough request.
Dear Wolfgang. Not only is it simple enough, but it has already been done!

Image
Are you suggesting that I go trawling through some ghastly MFD script, looking for code to copy/paste, without, you know, learning all the mysterious ways of the javaScript Date object? Shame on you, sir.
"There are large, white swans, and there are small, black swans," he explained, "But there are no medium-sized swans, and there are no grey swans. The non-existence of grey swans mitigates against belief in Mr Darwin's theory."
Post Reply