feat: date logic

This commit is contained in:
2026-07-25 23:49:55 +05:30
parent a5bbd67c02
commit e152237de3
4 changed files with 27 additions and 23 deletions
+11 -1
View File
@@ -10,7 +10,8 @@
"dependencies": {
"ask-sdk-core": "^2.14.0",
"ask-sdk-model": "^1.86.0",
"kollavarsham": "^2.5.4"
"kollavarsham": "^2.5.4",
"luxon": "^3.7.2"
},
"devDependencies": {
"ask-sdk-test": "^2.7.42",
@@ -1999,6 +2000,15 @@
"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": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+2 -1
View File
@@ -12,7 +12,8 @@
"dependencies": {
"ask-sdk-core": "^2.14.0",
"ask-sdk-model": "^1.86.0",
"kollavarsham": "^2.5.4"
"kollavarsham": "^2.5.4",
"luxon": "^3.7.2"
},
"devDependencies": {
"ask-sdk-test": "^2.7.42",
+12 -19
View File
@@ -1,4 +1,5 @@
import { Kollavarsham } from 'kollavarsham';
import { DateTime } from 'luxon';
const kollavarsham = new Kollavarsham({
system: 'SuryaSiddhanta',
@@ -13,7 +14,7 @@ const kollavarsham = new Kollavarsham({
* @returns {{ year: number, month: string, day: number, naksatra: string }}
*/
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)
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() {
// Construct date string formatted explicitly for India timezone
const now = new Date();
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));
export function toIndianStandardTime(date = new Date()) {
const ist = DateTime.fromJSDate(date).setZone('Asia/Kolkata');
return new Date(Date.UTC(ist.year, ist.month - 1, ist.day, ist.hour, ist.minute, ist.second));
}
/**
* Converts a number to its ordinal string representation (1st, 2nd, 3rd, 4th, etc.)
* @param {number} day - The day number (1-31)
+2 -2
View File
@@ -1,5 +1,5 @@
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
const GetMalayalamDateIntentHandler = {
@@ -76,7 +76,7 @@ const ErrorHandler = {
// 3. Central Response Builder
function generateCalendarResponse(handlerInput) {
const date = getMalayalamDate(getIstDate());
const date = getMalayalamDate(Date());
// Property mappings for kollavarsham package:
const dayNum = date.day; // Numeric date (e.g. 4)