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
JavaScript
;
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];
};