Skip to main content

Bangla Calendar Integration

banglaPlugin

📦 Import & Usage

tip

To use the Bangla Plugin, import it and register it with Chronos:

import { Chronos, chronos } from 'nhb-toolbox';
import { banglaPlugin } from 'nhb-toolbox/plugins/banglaPlugin';

// Register the plugin globally
Chronos.use(banglaPlugin);
// or
chronos.use(banglaPlugin);
// or
Chronos.register(banglaPlugin);
// or
chronos.register(banglaPlugin);

// Now use Bangla calendar methods
const c = new Chronos('2023-04-14');
const banglaDate = c.toBangla(); // Get complete Bangla date object

📋 Overview

The banglaPlugin adds comprehensive Bengali calendar functionality to Chronos, enabling:

  • Conversion between Gregorian and Bengali calendar dates
  • Bengali date formatting with customizable tokens
  • Access to Bengali year, month, day names, and seasons
  • Support for two calendar variants: 'revised-2019' (default) and 'revised-1966'
  • Multi-locale output (Bangla digits/names or Latin equivalents)

🎯 Methods Added by This Plugin

MethodDescriptionReturns
toBangla()Converts to complete Bangla date objectBanglaDateObject
formatBangla()Formats date using Bengali tokensstring
getBanglaYear()Gets Bengali yearstring or number
getBanglaMonth()Gets Bengali monthstring or number
getBanglaDay()Gets Bengali day of monthstring or number
getBanglaDayName()Gets Bengali weekday namestring
getBanglaMonthName()Gets Bengali month namestring
getBanglaSeasonName()Gets Bengali season namestring
configureBanglaCalendar()Sets default calendar variant globallyvoid

📚 API Reference

toBangla()

Converts the current date to a complete Bangla calendar date object.

Signature
toBangla<Locale extends $BnEn = 'bn'>(
options?: BanglaDateOptions<Locale>
): BanglaDateObject<Locale>
Parameters
  • options: Optional configuration including:
    • locale: 'bn' (default) for Bengali output, 'en' for English/Latin output
    • variant: Calendar variant ('revised-2019' or 'revised-1966')
Return Value

Complete Bangla date object containing:

{
year: string | number, // Bengali year
month: string | number, // Bengali month (1-12)
date: string | number, // Bengali day of month (1-31)
monthName: string, // Bengali month name
dayName: string, // Bengali weekday name
seasonName: string, // Bengali season name
isLeapYear: boolean // Whether it's a leap year
}
Examples
const chronos = new Chronos('2023-04-14');
const banglaDate = chronos.toBangla();
// Returns: {
// year: '১৪৩০',
// month: '১',
// date: '১',
// monthName: 'বৈশাখ',
// dayName: 'শুক্রবার',
// seasonName: 'গ্রীষ্ম',
// isLeapYear: false
// }

const banglaDateEn = chronos.toBangla({ locale: 'en' });
// Returns: {
// year: 1430,
// month: 1,
// date: 1,
// monthName: 'Boishakh',
// dayName: 'Shukrobar (Friday)',
// seasonName: 'Grisma (Summer)',
// isLeapYear: false
// }
Remarks
  • Uses the default calendar variant ('revised-2019') unless specified
  • The locale determines output format (Bangla vs Latin)
  • Year 0 corresponds to 593 CE in the Gregorian calendar

formatBangla()

Formats the current date as a Bangla calendar date string using customizable tokens.

Signature
formatBangla(format?: StrictFormat, options?: BnCalendarConfig): string
Parameters
  • format: Format string using tokens (default: 'ddd, DD mmmm (SS), YYYY বঙ্গাব্দ - hh:mm:ss (A)')
  • options: Calendar configuration with variant property
Return Value

Formatted Bangla date string according to the specified format.

Format Tokens
TokenDescriptionExample
YYYYFull year (Bangla digits)১৪৩০
YYLast 2 digits of year৩০
M or MMMonth (non-padded/padded) or ০১
mmmShort month nameবৈ
mmmmFull month nameবৈশাখ
D or DDDay of month (non-padded/padded) or ০১
DoCardinal day (same as D)
dShort weekday
ddWeekday without 'বার'রবি
dddFull weekdayরবিবার
H or HH24-hour (non-padded/padded) or ০২
h or hh12-hour (non-padded/padded) or ০৭
m or mmMinute (non-padded/padded) or ০৯
s or ssSecond (non-padded/padded) or ০৫
ms or mssMillisecond (non-padded/padded)২৩ or ০২৩
a or AAM/PM indicatorপূর্বাহ্ণ/অপরাহ্ণ
Z or ZZUTC offset+০৬:০০
SSeason nameগ্রীষ্ম
SSSeason with 'কাল' suffixগ্রীষ্মকাল
Escaping Text

To output raw text (not interpreted as a token), wrap it in square brackets:

  • [আজ] dddআজ রবিবার
  • [year ]YYYYyear ২০২৫
Examples
const chronos = new Chronos('2023-04-14 14:30:00');

chronos.formatBangla();
// Returns: 'শুক্রবার, বৈশাখ ০১ (গ্রীষ্মকাল), ১৪৩০ বঙ্গাব্দ - ০২:৩০:০০ (অপরাহ্ণ)'

chronos.formatBangla('YYYY-MM-DD');
// Returns: '১৪৩০-০১-০১'

chronos.formatBangla('mmmm DD, YYYY');
// Returns: 'বৈশাখ ০১, ১৪৩০'

chronos.formatBangla('hh:mm:ss A');
// Returns: '০২:৩০:০০ অপরাহ্ণ'

chronos.formatBangla('[আজ] ddd, DD mmmm');
// Returns: 'আজ শুক্রবার, ০১ বৈশাখ'

getBanglaYear()

Gets the Bangla calendar year for the current date.

Signature
getBanglaYear<Locale extends $BnEn = 'bn'>(locale?: Locale): $BanglaYear<Locale>
Parameters
  • locale: 'bn' (default) for Bangla digits, 'en' for Latin digits
Return Value

Bangla year in the specified locale format.

Examples
const chronos = new Chronos('2023-04-14');
chronos.getBanglaYear(); // Returns: '১৪৩০'
chronos.getBanglaYear('en'); // Returns: 1430
Remarks
  • The Bangla year starts on April 14th in the Gregorian calendar
  • Year 0 corresponds to 593 CE

getBanglaMonth()

Gets the Bangla calendar month for the current date.

Signature
getBanglaMonth<Locale extends $BnEn = 'bn'>(
options?: BanglaDateOptions<Locale>
): $BanglaMonth<Locale>
Parameters
  • options: Optional configuration with locale and variant
Return Value

Bangla month (1-12) in the specified locale format.

Examples
const chronos = new Chronos('2023-04-14');
chronos.getBanglaMonth(); // Returns: '১' (বৈশাখ)
chronos.getBanglaMonth({ locale: 'en' }); // Returns: 1
chronos.getBanglaMonth({ variant: 'revised-1966' }); // Uses 1966 variant
Remarks
  • Month 1 corresponds to বৈশাখ (mid-April to mid-May)
  • Results may vary between calendar variants near month boundaries

getBanglaDay()

Gets the Bangla calendar day of the month for the current date.

Signature
getBanglaDay<Locale extends $BnEn = 'bn'>(
options?: BanglaDateOptions<Locale>
): $BanglaMonthDate<Locale>
Parameters
  • options: Optional configuration with locale and variant
Return Value

Bangla day of month (1-31) in the specified locale format.

Examples
const chronos = new Chronos('2023-04-14');
chronos.getBanglaDay(); // Returns: '১'
chronos.getBanglaDay({ locale: 'en' }); // Returns: 1
chronos.getBanglaDay({ variant: 'revised-1966' }); // Uses 1966 variant
Remarks
  • The day number is 1-based (১ = first day of the month)
  • Different variants may have different month lengths for leap years

getBanglaDayName()

Gets the Bangla name of the weekday for the current date.

Signature
getBanglaDayName<Locale extends $BnEn = 'bn'>(locale?: Locale): BanglaDayName<Locale>
Parameters
  • locale: 'bn' (default) for Bengali, 'en' for English
Return Value

Name of the weekday in the specified locale.

Examples
const chronos = new Chronos('2023-04-14'); // Friday
chronos.getBanglaDayName(); // Returns: 'শুক্রবার'
chronos.getBanglaDayName('en'); // Returns: 'Shukrobar (Friday)'
Remarks
  • Weekday names follow standard Bengali naming convention ending with 'বার'
  • English names include transliteration and standard English name

getBanglaMonthName()

Gets the Bangla name of the month for the current date.

Signature
getBanglaMonthName<Locale extends $BnEn = 'bn'>(
options?: BanglaDateOptions<Locale>
): BanglaMonthName<Locale>
Parameters
  • options: Optional configuration with locale and variant
Return Value

Name of the month in the specified locale.

Examples
const chronos = new Chronos('2023-04-14');
chronos.getBanglaMonthName(); // Returns: 'বৈশাখ'
chronos.getBanglaMonthName({ locale: 'en' }); // Returns: 'Boishakh'
chronos.getBanglaMonthName({ variant: 'revised-1966' }); // Uses 1966 variant
Remarks
  • Month names follow traditional Bengali naming conventions
  • English names are transliterations of Bengali names

getBanglaSeasonName()

Gets the Bangla season name for the current date.

Signature
getBanglaSeasonName<Locale extends $BnEn = 'bn'>(
options?: BanglaDateOptions<Locale>
): BanglaSeasonName<Locale>
Parameters
  • options: Optional configuration with locale and variant
Return Value

Name of the season in the specified locale.

Examples
const chronos = new Chronos('2023-04-14');
chronos.getBanglaSeasonName(); // Returns: 'গ্রীষ্ম'
chronos.getBanglaSeasonName({ locale: 'en' }); // Returns: 'Grisma (Summer)'
Bengali Seasons (ঋতু)
Season (Bangla)EnglishPeriod
গ্রীষ্মGrisma (Summer)Mid-April to Mid-June
বর্ষাBarsa (Monsoon)Mid-June to Mid-August
শরৎSarat (Autumn)Mid-August to Mid-October
হেমন্তHemanta (Late Autumn)Mid-October to Mid-December
শীতShhit (Winter)Mid-December to Mid-February
বসন্তBasanta (Spring)Mid-February to Mid-April

configureBanglaCalendar()

Sets the default Bangla calendar variant globally for all Chronos instances.

Signature
configureBanglaCalendar(options: BnCalendarConfig): void
Parameters
  • options: Configuration with variant property ('revised-2019' or 'revised-1966')
Behavior
  • Sets the global default variant for all Bangla-related methods
  • Affects all existing and future Chronos instances
  • Can be overridden per-call using the variant option in individual methods
Examples
const c1 = new Chronos();
const c2 = new Chronos();

// Default is 'revised-2019'
c1.getBanglaMonth(); // uses 'revised-2019'

// Set global default to 1966 variant
c1.configureBanglaCalendar({ variant: 'revised-1966' });

c1.getBanglaMonth(); // now uses 'revised-1966'
c2.getBanglaMonth(); // also uses 'revised-1966'

// Per-call override still works
c1.getBanglaMonth({ variant: 'revised-2019' }); // uses 'revised-2019' for this call only
Important Notes
  • This method does not modify the instance, only sets global configuration
  • If never called, default is 'revised-2019'
  • Valid variants: 'revised-1966' and 'revised-2019'

🗂️ Type Definitions

BanglaDateObject

type BanglaDateObject<Locale extends $BnEn = 'bn'> = {
year: $BanglaYear<Locale>; // Bengali year
month: $BanglaMonth<Locale>; // Bengali month (1-12)
date: $BanglaMonthDate<Locale>; // Bengali day of month (1-31)
dayName: BanglaDayName<Locale>; // Bengali weekday name
monthName: BanglaMonthName<Locale>; // Bengali month name
seasonName: BanglaSeasonName<Locale>; // Bengali season name
isLeapYear: boolean; // Leap year status
};

BanglaDateOptions

interface BanglaDateOptions<Locale extends $BnEn> extends BnCalendarConfig {
locale?: Locale | $BnEn; // 'bn' or 'en'
}

interface BnCalendarConfig {
variant?: BnCalendarVariant; // 'revised-2019' or 'revised-1966'
}

Calendar Variants

type BnCalendarVariant = 'revised-2019' | 'revised-1966';

💡 Complete Example

import { Chronos } from 'nhb-toolbox';
import { banglaPlugin } from 'nhb-toolbox/plugins/banglaPlugin';

// Register plugin
Chronos.use(banglaPlugin);

// Create a date (April 14, 2023 = 1st Boishakh, 1430)
const chronos = new Chronos('2023-04-14 14:30:00');

// Get complete Bangla date object
const banglaDate = chronos.toBangla();
console.log(banglaDate);
// {
// year: '১৪৩০',
// month: '১',
// date: '১',
// monthName: 'বৈশাখ',
// dayName: 'শুক্রবার',
// seasonName: 'গ্রীষ্ম',
// isLeapYear: false
// }

// Format in Bengali
console.log(chronos.formatBangla());
// শুক্রবার, বৈশাখ ০১ (গ্রীষ্মকাল), ১৪৩০ বঙ্গাব্দ - ০২:৩০:০০ (অপরাহ্ণ)

// Format with custom pattern
console.log(chronos.formatBangla('DD mmmm, YYYY'));
// ০১ বৈশাখ, ১৪৩০

// Get individual components
console.log(chronos.getBanglaYear()); // '১৪৩০'
console.log(chronos.getBanglaMonthName()); // 'বৈশাখ'
console.log(chronos.getBanglaSeasonName()); // 'গ্রীষ্ম'
console.log(chronos.getBanglaDayName('en')); // 'Shukrobar (Friday)'

// Switch to 1966 variant
chronos.configureBanglaCalendar({ variant: 'revised-1966' });
console.log(chronos.getBanglaMonth({ variant: 'revised-1966' })); // '১' (using 1966 variant)

See Also