UNPKG

bangla-date-utils

Version:

A utility package for converting and formatting dates in the Bangla calendar system with support for Bangla numerals.

151 lines (150 loc) 6.39 kB
"use strict"; exports.__esModule = true; exports.getBanglaDateDetails = exports.convertToBanglaDate = exports.formatGregorianToBangla = exports.toBanglaNumerals = exports.BANGLA_WEEKDAYS = exports.BANGLA_SEASONS = exports.BANGLA_MONTHS = void 0; var banglaCalendar_1 = require("./banglaCalendar"); exports.BANGLA_MONTHS = banglaCalendar_1.BANGLA_MONTHS; exports.BANGLA_SEASONS = banglaCalendar_1.BANGLA_SEASONS; exports.BANGLA_WEEKDAYS = banglaCalendar_1.BANGLA_WEEKDAYS; // Helper to convert a number to Bangla numerals var banglaNumerals = ["০", "১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯"]; var toBanglaNumerals = function (num) { return num .toString() .split("") .map(function (digit) { return banglaNumerals[Number.parseInt(digit)] || digit; }) .join(""); }; exports.toBanglaNumerals = toBanglaNumerals; // Gregorian month names in Bangla var GREGORIAN_MONTHS_IN_BANGLA = [ "জানুয়ারি", "ফেব্রুয়ারি", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর", "ডিসেম্বর", ]; /** * Format a Gregorian date in Bangla language * @param dateString Date string (e.g., "2023-05-14" or "2023-05-14T10:30:00Z") * @param format Format option for the output * @returns Formatted Gregorian date in Bangla language */ var formatGregorianToBangla = function (dateString, format) { if (format === void 0) { format = "medium"; } // Parse the date string var date = new Date(dateString); // Check if the date is valid if (isNaN(date.getTime())) { throw new Error("Invalid date string: ".concat(dateString)); } var day = date.getDate(); var month = date.getMonth(); // 0-11 var year = date.getFullYear(); // Convert to Bangla numerals var banglaDay = (0, exports.toBanglaNumerals)(day); var banglaYear = (0, exports.toBanglaNumerals)(year); var banglaMonthName = GREGORIAN_MONTHS_IN_BANGLA[month]; // Format based on the requested format if (format === "full") { var weekday = getBanglaWeekday(date); return "".concat(weekday, ", ").concat(banglaDay, " ").concat(banglaMonthName, ", ").concat(banglaYear); } else if (format === "short") { return "".concat(banglaDay, "/").concat((0, exports.toBanglaNumerals)(month + 1), "/").concat(banglaYear); } else { // medium format (default) return "".concat(banglaDay, " ").concat(banglaMonthName, ", ").concat(banglaYear); } }; exports.formatGregorianToBangla = formatGregorianToBangla; /** * Format a Bangla date as a string * @param banglaDate BanglaDate object * @param format Format string (e.g., 'full', 'medium', 'short') * @returns Formatted Bangla date string */ var formatBanglaDateString = function (banglaDate, format, customFormat) { if (format === void 0) { format = "medium"; } var date = banglaDate.date, month = banglaDate.month, year = banglaDate.year, monthName = banglaDate.monthName, season = banglaDate.season; var banglaDateNum = (0, exports.toBanglaNumerals)(date); var banglaYear = (0, exports.toBanglaNumerals)(year); if (format === "full") { return "".concat(banglaDateNum, " ").concat(monthName, " ").concat(banglaYear, " (").concat(season, ")"); } else if (format === "short") { return "".concat(banglaDateNum, "/").concat((0, exports.toBanglaNumerals)(month), "/").concat(banglaYear); } else if (format === "custom" && customFormat) { // Handle custom format (placeholder for future implementation) // For now, return medium format return "".concat(banglaDateNum, " ").concat(monthName, " ").concat(banglaYear); } else { // medium format return "".concat(banglaDateNum, " ").concat(monthName, " ").concat(banglaYear); } }; /** * Convert a date string to a Bangla calendar date string * @param dateString Date string (e.g., "2023-05-14" or "2023-05-14T10:30:00Z") * @param format Format option for the output * @param customFormat Custom format string (for future implementation) * @returns Formatted Bangla calendar date string */ var convertToBanglaDate = function (dateString, format, customFormat) { if (format === void 0) { format = "medium"; } // Parse the date string var date = new Date(dateString); // Check if the date is valid if (isNaN(date.getTime())) { throw new Error("Invalid date string: ".concat(dateString)); } // Convert to Bangla date var banglaDate = (0, banglaCalendar_1.convertGregorianToBangla)(date); // Format and return return formatBanglaDateString(banglaDate, format, customFormat); }; exports.convertToBanglaDate = convertToBanglaDate; /** * Get detailed Bangla calendar information from a date string * @param dateString Date string (e.g., "2023-05-14" or "2023-05-14T10:30:00Z") * @param format Format option for the formatted output * @param customFormat Custom format string (for future implementation) * @returns Object containing formatted string and Bangla date details */ var getBanglaDateDetails = function (dateString, format, customFormat) { if (format === void 0) { format = "medium"; } // Parse the date string var date = new Date(dateString); // Check if the date is valid if (isNaN(date.getTime())) { throw new Error("Invalid date string: ".concat(dateString)); } // Convert to Bangla date var banglaDate = (0, banglaCalendar_1.convertGregorianToBangla)(date); // Format the date var formatted = formatBanglaDateString(banglaDate, format, customFormat); // Return both the formatted string and the details return { formatted: formatted, details: banglaDate }; }; exports.getBanglaDateDetails = getBanglaDateDetails; /** * Get the Bangla weekday name for a given date * @param date JavaScript Date object * @returns Bangla weekday name */ var getBanglaWeekday = function (date) { var day = date.getDay(); return banglaCalendar_1.BANGLA_WEEKDAYS[day]; };