UNPKG

react-native-nepali-picker

Version:

Minimalist and modern Nepali-date picker with customization.🌟

122 lines (117 loc) • 4.25 kB
"use strict"; import { bs } from "./config.js"; const formatDate = date => { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are zero-based const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; }; export const validateDate = date => { const dateArray = date.split('-'); const [userYear, userMonth, _] = dateArray.map(Number); if (dateArray.length !== 3) { return 'Invalid date format'; } else if (userYear < 2000 || userYear >= 2100) { return 'Year Range is 2000 to 2099'; } else if (userMonth < 1 || userMonth > 12) { return 'Month Range is 1 to 12'; } else { return true; } }; const FindDateDifference = (date1, date2) => { const diffInMs = date2 - date1; const diffInDays = diffInMs / (1000 * 60 * 60 * 24); return diffInDays; }; const AdToBs = UserDate => { const ReferenceDate = new Date('1943-04-14').getTime(); const UserTimeDate = new Date(UserDate).getTime(); if (UserTimeDate < ReferenceDate) { console.log('The minimum possible date you can enter is 2024-04-13 i.e 2081-01-01'); return 'The minimum possible date you can enter is 2024-04-13 i.e 2081-01-01'; } // number of days from that reference date const DateDifference = FindDateDifference(ReferenceDate, UserTimeDate); let nepaliYear = 2000; let nepaliMonth = 1; let nepaliDay = 1; //difference can calculate upto previous day so add 1 to get current day(Today) let DD = DateDifference + 1; outerLoop: for (let year = 2000; year < 2100; year++) { for (let month = 1; month <= 12; month++) { if (DD <= bs[year][month]) { nepaliYear = year; nepaliMonth = month; nepaliDay = DD; break outerLoop; } else { DD -= bs[year][month]; } } } return `${nepaliYear}-${String(nepaliMonth).padStart(2, '0')}-${String(nepaliDay).padStart(2, '0')}`; }; const NepaliToday = () => { const ReferenceDate = new Date('1943-04-14').getTime(); const TodayDate = Date.now(); const date = new Date(TodayDate); // number of return from that reference date const DateDifference = FindDateDifference(ReferenceDate, new Date(formatDate(date)).getTime()); let nepaliYear = 2000; let nepaliMonth = 1; let nepaliDay = 1; //difference can calculate upto previous day so add 1 to get current day(Today) let DD = DateDifference + 1; outerLoop: for (let year = 2000; year < 2100; year++) { for (let month = 1; month <= 12; month++) { if (DD <= bs[year][month]) { nepaliYear = year; nepaliMonth = month; nepaliDay = DD; break outerLoop; } else { DD -= bs[year][month]; } } } return `${nepaliYear}-${String(nepaliMonth).padStart(2, '0')}-${String(nepaliDay).padStart(2, '0')}`; // return DateDifference; //add the difference between reference and today date to nepali reference date and find new today nepali date }; const BsToAd = userDate => { try { const dateArray = userDate.split('-'); let dateDifference = 0; if (dateArray.length !== 3) { throw new Error('Invalid date format'); } const [userYear, userMonth, userDay] = dateArray.map(Number); if (userYear < 2000 || userYear >= 2100) { throw new Error('Year Range is 2000 to 2099'); } if (userMonth < 1 || userMonth > 12) { throw new Error('Month Range is 1 to 12'); } // if (userMonth < 1 || userMonth > 31) { // throw new Error('Month out of supported range'); // } for (let year = 2000; year < userYear; year++) { for (let month = 1; month <= 12; month++) { dateDifference += bs[year][month]; } } for (let month = 1; month < userMonth; month++) { dateDifference += bs[userYear][month]; } dateDifference += userDay - 1; const referenceDate = new Date('1943-04-14'); const futureDate = new Date(referenceDate); futureDate.setDate(referenceDate.getDate() + dateDifference); return futureDate.toISOString().split('T')[0]; } catch (error) { return ' Year Range is 2000 to 2099'; } }; export { AdToBs, BsToAd, formatDate, FindDateDifference, NepaliToday }; //# sourceMappingURL=functions.js.map