Skip to main content
Complete reference for all Time Utilities API endpoints, parameters, and response formats.

Base URL

https://api.sinaty.business/time/

Endpoints Overview

MethodEndpointDescription
GET/time/Process time operations with query parameters
POST/time/Process time operations with JSON body

GET /time/

Process time operations using query parameters.

Query Parameters

ParameterTypeDefaultDescription
operationstringcurrentOperation to perform
timezonestringUTCTimezone for current time
timestampintegernoneUnix timestamp
datetimestringnoneDatetime string
startstringnoneStart datetime for difference
endstringnoneEnd datetime for difference
amountintegernoneAmount to add/subtract
unitstringnoneTime unit (seconds, minutes, hours, days, weeks, months, years)
from_timezonestringnoneSource timezone for conversion
to_timezonestringnoneTarget timezone for conversion

Supported Operations

Time Information

OperationDescriptionRequired ParametersExample
currentGet current time informationtimezone (optional)Current time in specified timezone
timezonesList available timezonesNoneAll supported timezones

Time Calculations

OperationDescriptionRequired ParametersExample
differenceCalculate time differencestart, endDays between two dates
addAdd time to datetimedatetime, amount, unitAdd 7 days to date
subtractSubtract time from datetimedatetime, amount, unitSubtract 2 hours from time

Timezone Operations

OperationDescriptionRequired ParametersExample
convert_timezoneConvert between timezonesdatetime, from_timezone, to_timezoneConvert NY time to London
timezone_infoGet timezone informationtimezoneInfo about specific timezone

Example Requests

Current Time

curl "https://api.sinaty.business/time/?timezone=America/New_York"

Time Difference

curl "https://api.sinaty.business/time/?operation=difference&start=2024-01-01&end=2024-01-15"

Add Time

curl "https://api.sinaty.business/time/?operation=add&datetime=2024-01-01&amount=7&unit=days"

Timezone Conversion

curl "https://api.sinaty.business/time/?operation=convert_timezone&datetime=2024-01-15T10:30:00&from_timezone=America/New_York&to_timezone=Europe/London"

Response Formats

Current Time Response

{
    "operation": "current",
    "timestamp": 1705312200,
    "datetime": "2024-01-15 10:30:00",
    "date": "2024-01-15",
    "time": "10:30:00",
    "timezone": "America/New_York",
    "unix_timestamp": 1705312200,
    "iso8601": "2024-01-15T10:30:00-05:00",
    "rfc2822": "Mon, 15 Jan 2024 10:30:00 -0500",
    "year": "2024",
    "month": "01",
    "day": "15",
    "hour": "10",
    "minute": "30",
    "second": "00",
    "day_of_week": "Monday",
    "day_of_year": "14",
    "week_of_year": "03",
    "is_leap_year": true,
    "timezone_offset": "-05:00"
}

Time Difference Response

{
    "operation": "difference",
    "start": "2024-01-01T00:00:00Z",
    "end": "2024-01-15T00:00:00Z",
    "difference": {
        "total_seconds": 1209600,
        "total_minutes": 20160,
        "total_hours": 336,
        "total_days": 14,
        "total_weeks": 2,
        "formatted": "14 days, 0 hours, 0 minutes"
    }
}

Timezone Conversion Response

{
    "operation": "convert_timezone",
    "original_datetime": "2024-01-15T10:30:00",
    "from_timezone": "America/New_York",
    "to_timezone": "Europe/London",
    "converted_datetime": "2024-01-15T15:30:00",
    "converted_date": "2024-01-15",
    "converted_time": "15:30:00",
    "timezone_offset": "+00:00"
}

POST /time/

Process time operations using JSON body parameters.

Request Body

{
    "operation": "add",
    "datetime": "2024-01-01",
    "amount": 7,
    "unit": "days"
}

Example Request

curl -X POST "https://api.sinaty.business/time/" \
  -H "Content-Type: application/json" \
  -d '{"operation": "difference", "start": "2024-01-01", "end": "2024-01-15"}'

Response Fields

Current Time Response Fields

FieldTypeDescription
operationstringOperation performed
timestampintegerUnix timestamp
datetimestringFormatted datetime
datestringDate portion (YYYY-MM-DD)
timestringTime portion (HH:MM:SS)
timezonestringTimezone used
unix_timestampintegerUnix timestamp
iso8601stringISO 8601 format
rfc2822stringRFC 2822 format
yearstringYear
monthstringMonth (01-12)
daystringDay (01-31)
hourstringHour (00-23)
minutestringMinute (00-59)
secondstringSecond (00-59)
day_of_weekstringDay name
day_of_yearstringDay of year (001-366)
week_of_yearstringWeek of year (01-53)
is_leap_yearbooleanWhether it’s a leap year
timezone_offsetstringTimezone offset

Time Difference Response Fields

FieldTypeDescription
operationstringOperation performed
startstringStart datetime
endstringEnd datetime
difference.total_secondsintegerTotal seconds difference
difference.total_minutesintegerTotal minutes difference
difference.total_hoursintegerTotal hours difference
difference.total_daysintegerTotal days difference
difference.total_weeksintegerTotal weeks difference
difference.formattedstringHuman-readable difference

Error Responses

Missing Required Parameters (400)

{
    "error": "Missing required parameters",
    "details": "Operation 'difference' requires 'start' and 'end' parameters"
}

Invalid Datetime Format (400)

{
    "error": "Invalid datetime format",
    "details": "Unable to parse datetime: 'invalid-date'"
}

Invalid Timezone (400)

{
    "error": "Invalid timezone",
    "details": "Timezone 'Invalid/Timezone' not found"
}

Invalid Time Unit (400)

{
    "error": "Invalid time unit",
    "details": "Supported units: seconds, minutes, hours, days, weeks, months, years"
}

HTTP Status Codes

CodeDescription
200Success - Time operation completed
400Bad Request - Invalid parameters
500Internal Server Error

Rate Limits

No rate limits! You can make unlimited requests to our API.

Datetime Format Support

Input Formats

The API accepts various datetime formats:
  • ISO 8601: 2024-01-15T10:30:00Z
  • Date Only: 2024-01-15
  • Date and Time: 2024-01-15 10:30:00
  • Unix Timestamp: 1705312200
  • RFC 2822: Mon, 15 Jan 2024 10:30:00 -0500
  • Natural Language: tomorrow, next week, in 2 hours

Output Formats

All responses include multiple datetime formats:
  • ISO 8601: Standard international format
  • RFC 2822: Email-friendly format
  • Unix Timestamp: Numeric timestamp
  • Formatted: Human-readable format

Timezone Handling

Supported Timezones

The API supports all standard timezone identifiers:
  • Continental: America/New_York, Europe/London, Asia/Tokyo
  • UTC Variants: UTC, UTC+5, UTC-8
  • Abbreviations: EST, PST, GMT (when unambiguous)

Timezone Conversions

When converting between timezones:
  • Handles daylight saving time automatically
  • Preserves the exact moment in time
  • Provides offset information
  • Supports historical timezone changes

Time Units

Supported Units

UnitDescriptionExample
seconds1 secondAdd 30 seconds
minutes60 secondsAdd 15 minutes
hours3600 secondsAdd 2 hours
days86400 secondsAdd 7 days
weeks604800 secondsAdd 2 weeks
monthsVariable (28-31 days)Add 3 months
yearsVariable (365-366 days)Add 1 year

Unit Handling

  • Fixed Units: seconds, minutes, hours, days, weeks
  • Variable Units: months, years (account for leap years, month lengths)

Best Practices

Timezone Usage

# Good - Use specific timezone
curl "https://api.sinaty.business/time/?timezone=America/New_York"

# Avoid - Relying on server timezone
curl "https://api.sinaty.business/time/"

Date Calculations

# Good - Use ISO format for precision
curl "https://api.sinaty.business/time/?operation=difference&start=2024-01-01T00:00:00Z&end=2024-01-15T00:00:00Z"

# Good - Use natural language for relative dates
curl "https://api.sinaty.business/time/?operation=add&datetime=today&amount=7&unit=days"

Error Handling

Always implement proper error handling:
async function getCurrentTime(timezone = 'UTC') {
    try {
        const response = await fetch(
            `https://api.sinaty.business/time/?timezone=${encodeURIComponent(timezone)}`
        );
        
        if (!response.ok) {
            const error = await response.json();
            console.error('API Error:', error.error);
            console.error('Details:', error.details);
            return null;
        }
        
        const data = await response.json();
        return data;
    } catch (error) {
        console.error('Request failed:', error);
        return null;
    }
}

Common Use Cases

Meeting Scheduling

async function scheduleMeeting(startTime, duration, timezone) {
    const start = await getCurrentTime(timezone);
    const end = await addTime(start.datetime, duration, 'minutes');
    
    return {
        start: start.datetime,
        end: end.datetime,
        timezone: timezone
    };
}

Deadline Calculation

async function calculateDeadline(daysFromNow) {
    const result = await fetch(
        `https://api.sinaty.business/time/?operation=add&datetime=today&amount=${daysFromNow}&unit=days`
    );
    const data = await result.json();
    return data.datetime;
}

Timezone Conversion

async function convertMeetingTime(meetingTime, fromTimezone, toTimezone) {
    const result = await fetch(
        `https://api.sinaty.business/time/?operation=convert_timezone&datetime=${meetingTime}&from_timezone=${fromTimezone}&to_timezone=${toTimezone}`
    );
    const data = await result.json();
    return data.converted_datetime;
}

Performance Considerations

Caching

Consider caching timezone information and current time:
const timezoneCache = new Map();

async function getTimezoneInfo(timezone) {
    if (timezoneCache.has(timezone)) {
        return timezoneCache.get(timezone);
    }
    
    const result = await fetch(
        `https://api.sinaty.business/time/?operation=timezone_info&timezone=${timezone}`
    );
    const data = await result.json();
    
    timezoneCache.set(timezone, data);
    return data;
}

Batch Operations

For multiple time operations, consider using POST requests:
async function processMultipleTimes(operations) {
    const response = await fetch('https://api.sinaty.business/time/', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(operations)
    });
    
    return await response.json();
}
I