"use client" import * as React from "react" import { format, getMonth, getYear, setMonth, setYear, setHours, setMinutes, setSeconds } from "date-fns" import { Calendar as CalendarIcon, Clock } from "lucide-react" import { cn } from "@/lib/utils" import { Button } from "@/app/_components/ui/button" import { Calendar } from "@/app/_components/ui/calendar" import { Popover, PopoverContent, PopoverTrigger, } from "@/app/_components/ui/popover" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./select" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/app/_components/ui/tabs" interface DateTimePickerProps { startYear?: number; endYear?: number; } export function DateTimePicker2({ startYear = getYear(new Date()) - 100, endYear = getYear(new Date()) + 100, }: DateTimePickerProps) { const [date, setDate] = React.useState(new Date()); const months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', ]; const years = Array.from( { length: endYear - startYear + 1 }, (_, i) => startYear + i ); // Generate hours (0-23) const hours = Array.from({ length: 24 }, (_, i) => i); // Generate minutes and seconds (0-59) const minutesSeconds = Array.from({ length: 60 }, (_, i) => i); const handleMonthChange = (month: string) => { const newDate = setMonth(date, months.indexOf(month)); setDate(newDate); } const handleYearChange = (year: string) => { const newDate = setYear(date, parseInt(year)); setDate(newDate); } const handleHourChange = (hour: string) => { const newDate = setHours(date, parseInt(hour)); setDate(newDate); } const handleMinuteChange = (minute: string) => { const newDate = setMinutes(date, parseInt(minute)); setDate(newDate); } const handleSecondChange = (second: string) => { const newDate = setSeconds(date, parseInt(second)); setDate(newDate); } const handleSelect = (selectedDate: Date | undefined) => { if (selectedDate) { // Preserve time when changing date const newDate = new Date(selectedDate); newDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds()); setDate(newDate); } } // Format number to always have 2 digits (e.g., 1 -> 01) const formatTwoDigits = (num: number) => num.toString().padStart(2, '0'); return ( Date Time
{format(date, "HH:mm:ss")}
) }