feat: date logic
This commit is contained in:
Generated
+11
-1
@@ -10,7 +10,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ask-sdk-core": "^2.14.0",
|
"ask-sdk-core": "^2.14.0",
|
||||||
"ask-sdk-model": "^1.86.0",
|
"ask-sdk-model": "^1.86.0",
|
||||||
"kollavarsham": "^2.5.4"
|
"kollavarsham": "^2.5.4",
|
||||||
|
"luxon": "^3.7.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ask-sdk-test": "^2.7.42",
|
"ask-sdk-test": "^2.7.42",
|
||||||
@@ -1999,6 +2000,15 @@
|
|||||||
"get-func-name": "^2.0.1"
|
"get-func-name": "^2.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/luxon": {
|
||||||
|
"version": "3.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz",
|
||||||
|
"integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/math-intrinsics": {
|
"node_modules/math-intrinsics": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
||||||
|
|||||||
+2
-1
@@ -12,7 +12,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ask-sdk-core": "^2.14.0",
|
"ask-sdk-core": "^2.14.0",
|
||||||
"ask-sdk-model": "^1.86.0",
|
"ask-sdk-model": "^1.86.0",
|
||||||
"kollavarsham": "^2.5.4"
|
"kollavarsham": "^2.5.4",
|
||||||
|
"luxon": "^3.7.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ask-sdk-test": "^2.7.42",
|
"ask-sdk-test": "^2.7.42",
|
||||||
|
|||||||
+12
-19
@@ -1,4 +1,5 @@
|
|||||||
import { Kollavarsham } from 'kollavarsham';
|
import { Kollavarsham } from 'kollavarsham';
|
||||||
|
import { DateTime } from 'luxon';
|
||||||
|
|
||||||
const kollavarsham = new Kollavarsham({
|
const kollavarsham = new Kollavarsham({
|
||||||
system: 'SuryaSiddhanta',
|
system: 'SuryaSiddhanta',
|
||||||
@@ -13,7 +14,7 @@ const kollavarsham = new Kollavarsham({
|
|||||||
* @returns {{ year: number, month: string, day: number, naksatra: string }}
|
* @returns {{ year: number, month: string, day: number, naksatra: string }}
|
||||||
*/
|
*/
|
||||||
export function getMalayalamDate(gregorianDate) {
|
export function getMalayalamDate(gregorianDate) {
|
||||||
const kollavarshamDate = kollavarsham.fromGregorianDate(gregorianDate);
|
const kollavarshamDate = kollavarsham.fromGregorianDate(toIndianStandardTime(gregorianDate));
|
||||||
|
|
||||||
// Safely extract nakshatra name (handles string or object returns safely)
|
// Safely extract nakshatra name (handles string or object returns safely)
|
||||||
const naksatraName =
|
const naksatraName =
|
||||||
@@ -31,28 +32,20 @@ export function getMalayalamDate(gregorianDate) {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns {Date} - Current date and time in IST (Indian Standard Time)
|
* Returns a standard JS Date object where the UTC year/month/day/time match
|
||||||
|
* the corresponding local year/month/day/time in Indian Standard Time (IST).
|
||||||
|
* Useful for handing off to libraries like kollavarsham.
|
||||||
|
*
|
||||||
|
* @param {Date} [date=new Date()]
|
||||||
|
* @returns {Date}
|
||||||
*/
|
*/
|
||||||
export function getIstDate() {
|
export function toIndianStandardTime(date = new Date()) {
|
||||||
// Construct date string formatted explicitly for India timezone
|
const ist = DateTime.fromJSDate(date).setZone('Asia/Kolkata');
|
||||||
const now = new Date();
|
return new Date(Date.UTC(ist.year, ist.month - 1, ist.day, ist.hour, ist.minute, ist.second));
|
||||||
const formatter = new Intl.DateTimeFormat('en-US', {
|
|
||||||
timeZone: 'Asia/Kolkata',
|
|
||||||
year: 'numeric',
|
|
||||||
month: '2-digit',
|
|
||||||
day: '2-digit'
|
|
||||||
});
|
|
||||||
|
|
||||||
// Formats into MM/DD/YYYY in IST
|
|
||||||
const [{ value: month }, , { value: day }, , { value: year }] = formatter.formatToParts(now);
|
|
||||||
|
|
||||||
// Create UTC date anchored at 0:00:00 for that IST date
|
|
||||||
// Month is 0-indexed in JavaScript Date constructor, so subtract 1.
|
|
||||||
// Year and date don't need adjustment.
|
|
||||||
return new Date(Date.UTC(year, month - 1, day, 0, 0, 0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts a number to its ordinal string representation (1st, 2nd, 3rd, 4th, etc.)
|
* Converts a number to its ordinal string representation (1st, 2nd, 3rd, 4th, etc.)
|
||||||
* @param {number} day - The day number (1-31)
|
* @param {number} day - The day number (1-31)
|
||||||
|
|||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
import Alexa from 'ask-sdk-core';
|
import Alexa from 'ask-sdk-core';
|
||||||
import { getMalayalamDate, getOrdinalDay, getIstDate } from './calendar.mjs';
|
import { getMalayalamDate, getOrdinalDay } from './calendar.mjs';
|
||||||
|
|
||||||
// 1. Core Logic: Handles explicit date/star question requests
|
// 1. Core Logic: Handles explicit date/star question requests
|
||||||
const GetMalayalamDateIntentHandler = {
|
const GetMalayalamDateIntentHandler = {
|
||||||
@@ -76,7 +76,7 @@ const ErrorHandler = {
|
|||||||
|
|
||||||
// 3. Central Response Builder
|
// 3. Central Response Builder
|
||||||
function generateCalendarResponse(handlerInput) {
|
function generateCalendarResponse(handlerInput) {
|
||||||
const date = getMalayalamDate(getIstDate());
|
const date = getMalayalamDate(Date());
|
||||||
|
|
||||||
// Property mappings for kollavarsham package:
|
// Property mappings for kollavarsham package:
|
||||||
const dayNum = date.day; // Numeric date (e.g. 4)
|
const dayNum = date.day; // Numeric date (e.g. 4)
|
||||||
|
|||||||
Reference in New Issue
Block a user