Trending

#datepicker

Latest posts tagged with #datepicker on Bluesky

Latest Top
Trending

Posts tagged #datepicker

Preview
Bad UX World Cup Build a bad date picker and win a shit trophy! Presented by Nordcraft.

#Design #Competitions
Bad UX World Cup 2025 · Who has crafted the most terrifying date picker? ilo.im/167hhm by Nordcraft

_____
#Champions #UX #DatePicker #Usability #Accessibility #DesignPattern #UxDesign #UiDesign #WebDesign

1 0 0 0
Video

Just submitted my entry for https://badux.lol/ (Bad UX World Cup) 🤞

The other entries are just too good. Mine: https://cheeaun.github.io/clockwork-date-picker/

#BadUX #DatePicker

1 3 0 0
Preview
Mastering JavaScript Date Formatting: From Native Methods to Modern Libraries ## Why Date Formatting Matters Every web application that displays dates—whether it’s a blog post timestamp, an event scheduler, or a user activity log—needs a way to take a raw `Date` object and turn it into a human-readable string. Unfortunately, date formatting is riddled with pitfalls: 1. **Locale Differences** * “MM/DD/YYYY” (US) vs. “DD/MM/YYYY” (many other countries) * 12‑hour vs. 24‑hour time 2. **Time Zones** * Coordinated Universal Time (UTC) vs. local time * Daylight Saving Time shifts 3. **Browser Inconsistencies** * Older browsers implement date methods differently 4. **Manual String Manipulation** * Concatenating `getMonth() + 1`, `getDate()`, etc. is error‑prone Modern JavaScript provides several tools to handle these challenges. Let’s start with the built‑in APIs. ## 1. The Built‑In APIs ### 1.1 `Date.toString()` and Its Variants * **`Date.prototype.toString()`** Returns a human‑readable string, including weekday, month name, day, time, timezone, and year. const now = new Date(); console.log(now.toString()); // e.g. "Sun Jun 01 2025 14:30:45 GMT+0200 (Eastern European Standard Time)" ` > **Pros:** Quick debugging, includes timezone info. > **Cons:** Not customizable; output varies slightly across browsers. * **`Date.prototype.toUTCString()`** Converts the date to UTC and returns a standardized format: ```js console.log(now.toUTCString()); // e.g. "Sun, 01 Jun 2025 12:30:45 GMT" ``` * **`Date.prototype.toISOString()`** Outputs an ISO 8601 string: ```js console.log(now.toISOString()); // e.g. "2025-06-01T12:30:45.123Z" ``` > **Use Cases:** > > * Storing timestamps in databases > * Backend API communication > * Avoiding timezone ambiguity > ### 1.2 `Date.toLocaleDateString()` and `toLocaleTimeString()` For most user‑facing scenarios, you’ll want to display dates in the visitor’s locale. JavaScript’s Internationalization API (`Intl`) provides a straightforward way: ```js const now = new Date(); // Basic usage: default locale console.log(now.toLocaleDateString()); // e.g. "6/1/2025" (US) or "01/06/2025" (UK) console.log(now.toLocaleTimeString()); // e.g. "2:30:45 PM" (US) or "14:30:45" (24‑hour locales) ``` #### Customizing with Options You can pass an options object to control which parts of the date appear: ```js const options = { year: 'numeric', // "2025" month: 'long', // "June" day: '2-digit', // "01" weekday: 'short', // "Sun" hour: '2-digit', // "02 PM" (12‑hour) or "14" (24‑hour) minute: '2-digit', // "30" second: '2-digit', // "45" timeZoneName: 'short' // "EEST" }; console.log(now.toLocaleString('en-US', options)); // "Sun, June 01, 2025, 02:30:45 PM EEST" console.log(now.toLocaleString('ar-EG', options)); // "الأحد، ٠١ يونيو ٢٠٢٥، ٠٢:٣٠:٤٥ م GMT+2" ``` > **Tip:** Always specify a locale string (e.g., `"en-US"`, `"fr-FR"`, `"ja-JP"`). If you leave it out, JavaScript uses the user’s environment, which might lead to inconsistency in server‐side code (Node.js). ### 1.3 `Intl.DateTimeFormat` For more fine‑grained control or when you need to reuse a locale formatter multiple times, you can instantiate an `Intl.DateTimeFormat` object: ```js const formatter = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', hour12: false, timeZone: 'Europe/London' }); // Later in your code: console.log(formatter.format(now)); // e.g. "1 Jun 2025, 14:30" ``` **Key Advantages** : * **Performance:** Reusing the same `Intl.DateTimeFormat` instance is faster than calling `toLocaleString()` repeatedly. * **Time Zone Handling:** You can explicitly format in any IANA time zone (e.g., `"America/New_York"`, `"Asia/Tokyo"`). ## 2. Manual Formatting with Template Literals Sometimes you need a custom format that built‑in APIs don’t cover (e.g., `"YYYY/MM/DD hh:mm:ss"`). You can extract date parts manually and interpolate into a string: ```js function padZero(number) { return number < 10 ?`0${number}` : number; } function formatDateCustom(date) { const year = date.getFullYear(); // 2025 const month = padZero(date.getMonth() + 1); // getMonth() is zero‑based const day = padZero(date.getDate()); // 01–31 const hours = padZero(date.getHours()); // 00–23 const minutes = padZero(date.getMinutes()); // 00–59 const seconds = padZero(date.getSeconds()); // 00–59 return `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`; } console.log(formatDateCustom(new Date())); // "2025/06/01 14:30:45" ``` > **Caveats** : > > * Must remember to add `1` to `getMonth()`. > * Doesn’t handle locale‑specific names (e.g., month names or weekdays). > * No built‑in time zone support—strings always reflect the local environment. > ## 3. Third‑Party Libraries: date-fns, Moment.js, and Luxon For complex applications, using a dedicated date library can greatly simplify formatting, parsing, and manipulating dates/times. ### 3.1 date‑fns (Modern, Tree‑Shakeable) date‑fns is a popular choice because it provides over 200 immutable functions, each imported individually to keep bundle size small. Its `format` function makes custom formatting easy: ```bash npm install date-fns ``` ```js import { format } from 'date-fns'; import { enUS, arSA } from 'date-fns/locale'; const now = new Date(); // Basic format tokens: https://date-fns.org/v2.29.3/docs/format console.log(format(now, 'yyyy-MM-dd HH:mm:ss')); // e.g. "2025-06-01 14:30:45" console.log(format(now, "EEEE, do MMMM yyyy", { locale: enUS })); // e.g. "Sunday, 1st June 2025" console.log(format(now, "yyyy 'سنة' MMMM do", { locale: arSA })); // e.g. "2025 سنة يونيو ١" ``` **Why date‑fns?** * **Modularity:** Import only what you need—no huge moment‑like bundle. * **Immutable API:** Functions return new `Date` objects; no side effects. * **Active Maintenance:** Regular updates, support for modern JavaScript. ### 3.2 Moment.js (Legacy, Heavyweight) Moment.js was the de facto standard for years but is now in maintenance mode. It’s larger in size (∼67 KB minified) and mutable by default. ```bash npm install moment ``` ```js import moment from 'moment'; const now = moment(); // Format with moment’s tokens (similar to date-fns but with some differences) console.log(now.format('YYYY-MM-DD HH:mm:ss')); // e.g. "2025-06-01 14:30:45" console.log(now.locale('ar').format('dddd، D MMMM YYYY, h:mm A')); // e.g. "الأحد، 1 يونيو 2025، 2:30 م" ``` **Drawbacks:** * **Large Bundle:** Impacts load time unless you use a CDN. * **Mutable:** Calling `.add()` or `.subtract()` mutates the original moment. * **In Maintenance:** Not recommended for greenfield projects. ### 3.3 Luxon (Built on Intl, Modern) Luxon was created by the Moment.js team to address common pain points. It relies heavily on the native `Intl` API and is immutable. ```bash npm install luxon ``` ```js import { DateTime } from 'luxon'; const now = DateTime.local(); // ISO string console.log(now.toISO()); // e.g. "2025-06-01T14:30:45.123+02:00" // Custom format (uses Intl under the hood) console.log(now.toFormat('yyyy LLL dd, HH:mm:ss')); // e.g. "2025 Jun 01, 14:30:45" // Locale‑aware console.log(now.setLocale('ar').toLocaleString(DateTime.DATE_FULL)); // e.g. "١ يونيو ٢٠٢٥" ``` **Highlights:** * **Based on Intl:** Accurate localization and time zones. * **Immutable & Chainable:** Safer for complex transformations. * **Built‑In Time Zone Support:** `DateTime.fromISO(string, { zone: 'America/New_York' })`. ## 4. Common Use Cases & Examples ### 4.1 Displaying a “Time Ago” String Neither the built‑in API nor pure string formatting covers relative phrases like “5 minutes ago” or “in 2 days.” You can implement a small helper or use a library: ```js function timeAgo(date) { const now = new Date(); const diffMs = now - date; const diffSec = Math.round(diffMs / 1000); const diffMin = Math.round(diffSec / 60); const diffHr = Math.round(diffMin / 60); const diffDay = Math.round(diffHr / 24); if (diffSec < 60) return `${diffSec} second${diffSec !== 1 ? 's' : ''} ago`; if (diffMin < 60) return `${diffMin} minute${diffMin !== 1 ? 's' : ''} ago`; if (diffHr < 24) return `${diffHr} hour${diffHr !== 1 ? 's' : ''} ago`; return `${diffDay} day${diffDay !== 1 ? 's' : ''} ago`; } // Usage: const publishedDate = new Date('2025-05-31T12:00:00'); console.log(timeAgo(publishedDate)); // e.g. "1 day ago" ``` If you prefer a library, timeago.js or date-fns’ `formatDistanceToNow` can help: ```js import { formatDistanceToNow } from 'date-fns'; console.log(formatDistanceToNow(new Date('2025-05-31T12:00:00'), { addSuffix: true })); // "1 day ago" ``` ### 4.2 Parsing User Input and Reformatting Suppose a user enters a date string like `"31/05/2025"`. You want to parse it and display it in ISO format: ```js function parseDDMMYYYY(str) { const [day, month, year] = str.split('/').map(Number); // Construct a Date in local time return new Date(year, month - 1, day); } const userInput = '31/05/2025'; const jsDate = parseDDMMYYYY(userInput); console.log(jsDate.toISOString()); // "2025-05-31T00:00:00.000Z" (midnight UTC) ``` With **date‑fns** : ```js import { parse, format } from 'date-fns'; const parsed = parse('31/05/2025', 'dd/MM/yyyy', new Date()); console.log(parsed); // Tue May 31 2025 00:00:00 GMT+0200 (Your Local Time) console.log(format(parsed, 'yyyy-MM-dd')); // "2025-05-31" ``` ## 5. Time Zone Best Practices * **Always store dates in UTC (e.g., ISO 8601) on the server/database.** Converting to local time should be a presentation‑layer concern. * **Be explicit about the time zone.** If you do `new Date()`, JavaScript uses the client’s system time zone. For reproducibility, use `Date.UTC(...)` or libraries like Luxon’s `DateTime.fromISO(..., { zone: 'UTC' })`. * **Watch out for DST (Daylight Saving Time).** When adding days or months manually, you can accidentally shift an hour. Libraries like date‑fns and Luxon handle this edge case. ```js import { addDays } from 'date-fns'; const springForward = new Date('2025-03-09T02:00:00'); // DST starts in many regions console.log(addDays(springForward, 1).toString()); // May produce "Mon Mar 10 2025 02:00:00 GMT−0500 (Eastern Standard Time)" // vs. expected "Mon Mar 10 2025 02:00:00 GMT−0400 (Eastern Daylight Time)" ``` Using **Luxon** for consistency: ```js import { DateTime } from 'luxon'; const dt = DateTime.fromISO('2025-03-09T02:00:00', { zone: 'America/New_York' }); const dtPlusOne = dt.plus({ days: 1 }); console.log(dtPlusOne.toString()); // "2025-03-10T02:00:00.000-04:00" correctly accounts for DST. ``` ## 6. Wrapping It All Up: Best Practices 1. **Prefer Built‑In Methods for Simple Use Cases:** * `toLocaleDateString()` for quick locale‑aware output. * `Intl.DateTimeFormat` when you need to reuse formatters or specify time zones. 1. **Use Third‑Party Libraries for Complex Formatting or Manipulation:** * **date‑fns** if you want a modern, modular library. * **Luxon** for powerful time zone support and immutable API. * **Avoid Moment.js** for new projects—its large bundle size and legacy status can hurt performance. 1. **Store Everything in UTC:** * Convert user input or external timestamps to UTC before saving. * On the front end, convert UTC to the user’s time zone only when displaying. 1. **Favor Explicit Locale & Time Zone Settings:** * Always pass a locale string (e.g., `"en-US"`) and, if necessary, a `timeZone` option. * Don’t rely on default behavior, especially in server‑side rendered apps (Node.js might default to UTC). 1. **Handle Edge Cases (Invalid Dates):** ```js const d = new Date('invalid'); if (isNaN(d)) { console.error('Invalid date provided'); } ``` Libraries like date‑fns provide helper functions (`isValid`) that can make this cleaner. 1. **Automate Unit Testing for Date‑Related Logic:** * Use libraries like Jest with built‑in fake timers. * Write tests for “adding months over DST boundaries,” “parsing edge‑case date strings,” and “formatting in various locales.” ## 7. Complete Examples ### Example: Custom Dashboard Widget Suppose you’re building a dashboard that shows: 1. Current local date and time. 2. A list of upcoming events with dates formatted as “DD MMM YYYY, hh:mm A” in the user’s locale. 3. “Time ago” badges next to past events. ```html ## Current Date & Time ## Upcoming Events import { format, formatDistanceToNow } from 'date-fns'; import { enUS } from 'date-fns/locale'; // 1. Show current date & time, updating every second function showCurrentTime() { const now = new Date(); const formatted = format(now, "dd MMM yyyy, hh:mm:ss a", { locale: enUS }); document.getElementById('current-time').textContent = formatted; } setInterval(showCurrentTime, 1000); showCurrentTime(); // 2. List of events const events = [ { name: 'Deployment', date: new Date('2025-06-05T14:00:00') }, { name: 'Team Meeting', date: new Date('2025-06-03T09:30:00') }, { name: 'Code Freeze', date: new Date('2025-05-30T23:59:59') }, ]; function renderEvents() { const ul = document.getElementById('events'); ul.innerHTML = ''; events.forEach(event => { const li = document.createElement('li'); const dateStr = format(event.date, "dd MMM yyyy, hh:mm a", { locale: enUS }); let badge = ''; if (event.date < new Date()) { // Event is in the past const ago = formatDistanceToNow(event.date, { addSuffix: true, locale: enUS }); badge = ` — ${ago}`; } li.textContent = `${event.name}: ${dateStr}${badge}`; ul.appendChild(li); }); } renderEvents(); ``` **Explanation** : * We use `format()` from **date‑fns** to output dates in a consistent, human‑readable format. * We call `formatDistanceToNow()` to generate “time ago” badges for past events. * The clock updates every second to always reflect the user’s local time. ## 8. Further Reading & Resources * **MDN: Date and Time Formats** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date * **ECMAScript Internationalization API (`Intl`)** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat * **date‑fns Documentation** https://date-fns.org/docs/Getting-Started * **Luxon Documentation** https://moment.github.io/luxon/#/ * **timeago.js** https://github.com/hustcc/timeago.js
0 0 0 0
Preview
How to Add Date Picker Option to WooCommerce Products Learn how you can easily add a date picker option in WooCommerce using this step-by-step guide.

Need to add a date picker to WooCommerce? 📅

✅ Perfect for bookings, deliveries, or events
✅ Easy setup, no code
✅ Enhances UX + reduces order confusion

👉 Guide: www.wpxpo.com/add-date-pic...

#WooCommerce #WordPressTips #DatePicker #EcommerceUX #WPXPO

1 0 0 0
Video

shadcn-calendar-component: a shadcn/ui date picker component for Next.js apps.

* Single date & range selection
* Predefined ranges (Last Week, This Year, etc.)
* Uses react-day-picker & date-fns

👉 next.jqueryscript.net/shadcn-ui/ca...

#Nextjs #Reactjs #WebDev #DatePicker #shadcnui

3 0 0 0
Video

Smart Date Picker Prototype
build using package : chrono-node and svelte

Example :
tomorrow, next day, after 4 days, after 2 week etc..
Will update the date on Date Picker Component

Try out : svelte-form-builder.vercel.app/try

#svelte #datepicker #chrononode

8 0 0 0

❖ Date Picker
#figma #design #buildinpublic #calendar #date #datepicker #ux #webdesign #icondesign #dailyicon #DailyUI #UI

5 0 0 1
Preview
Componente de fecha y hora para HTML con soporte para Bootstrap » Proyecto A Cómo añadir un componente de selección de fecha y hora en nuestro sitio web. Este componente admite el tema visual Bootstrap 5. Incluimos todas las dependencias necesarias para su funcionamiento (JQue...

Componente de fecha y hora para HTML con soporte para Bootstrap

proyectoa.com/componente-d...

Cómo añadir un componente de. Este componente admite el tema visual Bootstrap 5

#fecha #hora #datepicker #timepicker #html #css #javascript #bootstrap

2 0 0 0
Post image

Flutter routine: that's what I call a well-maintained lib. SyncFusion date picker last committed 9 hours ago. #flllutter #dart #lib #pubdev #syncfusion #datepicker #airon #tark #androiddev #iosdev

1 0 0 0