Page 1 of 1

Earthian Calendar

Posted: Sat Apr 12, 2025 6:12 am
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!

Re: Earthian Calendar

Posted: Mon Apr 14, 2025 10:49 pm
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

Re: Earthian Calendar

Posted: Tue Apr 15, 2025 2:09 am
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.