{
  "address": "7933c8f804bbcbd8484868d62edb0dd0",
  "category": "other",
  "question": "If a meeting is at 2026-09-30 18:30:00 UTC, what is the local time at offsets -05:00, +01:00, and +09:00?",
  "answer": "-05:00: 2026-09-30 13:30:00 (same day); +01:00: 2026-09-30 19:30:00 (same day); +09:00: 2026-10-01 03:30:00 (next day)",
  "askedBy": {
    "kind": "guest",
    "display": "method deck",
    "stamped": false,
    "id": null
  },
  "answeredBy": "method",
  "madeAt": "2026-09-30T22:39:30.722Z",
  "validUntil": null,
  "validityClass": "forever",
  "sources": [
    {
      "label": "chrono-Compatible Low-Level Date Algorithms",
      "url": "https://howardhinnant.github.io/date_algorithms.html"
    }
  ],
  "supersedes": null,
  "supersededBy": null,
  "isSeed": false,
  "seedSource": null,
  "seedAttribution": null,
  "duplicateOfQid": null,
  "publishedAt": null,
  "unpublishedAt": null,
  "voteCount": 0,
  "queuedForSubstrate": false,
  "answerMethod": "method",
  "unsourced": false,
  "source": {
    "kind": "url",
    "value": "https://howardhinnant.github.io/date_algorithms.html",
    "retrieved_utc": "2026-09-30T19:41:35Z"
  },
  "qsha256": "824267ec18b188fb2d85e79288a874ab2ea32b02a88608572740a29fddc6a184",
  "runOne": null,
  "cardContractVersion": "card_contract/1",
  "deck_id": "method-deck",
  "deck_title": "Method Deck",
  "method": {
    "name": "Meeting time across three fixed offsets",
    "version": "1",
    "source_url_or_file": "methods/meeting-time-across-zones.cjs",
    "sha256_of_method_file": "fa06cac422708aa2c0424edd41a7a1ab00f79c3eff2718cb74a4c0b153ff4976"
  },
  "receipt": {
    "inSubstrate": false,
    "local": true,
    "modelCallsAtMint": 0,
    "tokensAtMint": 0
  },
  "method_deck": {
    "inputs": [
      {
        "name": "utc_date",
        "type": "string",
        "format": "date",
        "required": true,
        "description": "ISO 8601 UTC date of the meeting instant, YYYY-MM-DD"
      },
      {
        "name": "utc_time",
        "type": "string",
        "required": true,
        "description": "UTC wall-clock time of the meeting instant, HH:MM or HH:MM:SS"
      },
      {
        "name": "offset_a",
        "type": "string",
        "required": true,
        "description": "First fixed UTC offset, e.g. -05:00"
      },
      {
        "name": "offset_b",
        "type": "string",
        "required": true,
        "description": "Second fixed UTC offset, e.g. +01:00"
      },
      {
        "name": "offset_c",
        "type": "string",
        "required": true,
        "description": "Third fixed UTC offset, e.g. +09:00"
      }
    ],
    "outputs": [
      {
        "name": "local_a",
        "description": "Local date and time at offset_a, with same/next/previous day flag"
      },
      {
        "name": "local_b",
        "description": "Local date and time at offset_b, with same/next/previous day flag"
      },
      {
        "name": "local_c",
        "description": "Local date and time at offset_c, with same/next/previous day flag"
      }
    ],
    "steps": [
      "Parse utc_date and utc_time into a day-number (Hinnant days_from_civil, cited above) and seconds-since-midnight, forming a single UTC instant in total seconds.",
      "Parse each of offset_a, offset_b, offset_c as a signed HH:MM offset from UTC, in seconds.",
      "For each offset: local_total_seconds = utc_total_seconds + offset_seconds; local_day_number = floor(local_total_seconds / 86400); seconds_into_day = local_total_seconds - local_day_number * 86400.",
      "Convert local_day_number back to a civil date and seconds_into_day back to HH:MM:SS.",
      "Compare local_day_number to the original UTC day-number to report same day, next day, or previous day."
    ],
    "constants": [],
    "examples": [
      {
        "name": "worked example",
        "inputs": {
          "utc_date": "2026-09-30",
          "utc_time": "18:30:00",
          "offset_a": "-05:00",
          "offset_b": "+01:00",
          "offset_c": "+09:00"
        },
        "expected": {
          "answer": "-05:00: 2026-09-30 13:30:00 (same day); +01:00: 2026-09-30 19:30:00 (same day); +09:00: 2026-10-01 03:30:00 (next day)"
        },
        "check": "18:30 UTC minus 5h = 13:30 same day; plus 1h = 19:30 same day; plus 9h = 27:30 = 03:30 the next day"
      },
      {
        "name": "test vector: all same day",
        "inputs": {
          "utc_date": "2026-01-01",
          "utc_time": "12:00:00",
          "offset_a": "+00:00",
          "offset_b": "+02:00",
          "offset_c": "-03:00"
        },
        "expected": {
          "answer": "+00:00: 2026-01-01 12:00:00 (same day); +02:00: 2026-01-01 14:00:00 (same day); -03:00: 2026-01-01 09:00:00 (same day)"
        },
        "check": "noon UTC stays within the same calendar date at +2h and -3h"
      },
      {
        "name": "test vector: previous day rollover",
        "inputs": {
          "utc_date": "2026-06-15",
          "utc_time": "01:00:00",
          "offset_a": "-08:00",
          "offset_b": "+00:00",
          "offset_c": "+05:30"
        },
        "expected": {
          "answer": "-08:00: 2026-06-14 17:00:00 (previous day); +00:00: 2026-06-15 01:00:00 (same day); +05:30: 2026-06-15 06:30:00 (same day)"
        },
        "check": "01:00 UTC minus 8h = 17:00 the previous day"
      }
    ],
    "disclaimer": null,
    "deck_category": "timezones"
  },
  "status": "minted",
  "kind": "method",
  "provenanceClass": "own_question",
  "provenance": {
    "schema": "card_provenance/2.0.0",
    "chain": [
      {
        "source": {
          "kind": "url",
          "value": "https://howardhinnant.github.io/date_algorithms.html",
          "retrieved_utc": "2026-09-30T19:41:35Z"
        },
        "sha256": "d0295d69e2565cb8f3eb2b8ee9c9e37aace1dec542ec5a1aeefaaef6de1ba2e5",
        "supersedes": null,
        "added_utc": "2026-09-30T22:39:30.722Z",
        "added_by": "method:Meeting time across three fixed offsets",
        "why": "the method that computed this answer",
        "check": null,
        "status_label": "pending",
        "signature": null
      }
    ]
  }
}
