blob: 365382f80d9a52d3757b89615775202848d7fa65 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
export interface FimsDate {
year: number;
month: number;
day: number;
}
export function dateAsISOString(date: Date): string {
return date.toISOString().slice(0, 10);
}
export function todayAsISOString(): string {
return new Date().toISOString().slice(0, 10);
}
/**
* Converts '2017-01-20' to full ISO string e.g. '2017-01-20T00:00:00.000Z'
* @param dateString
*/
export function toLongISOString(dateString: string): string {
const date: Date = parseDate(dateString);
return date.toISOString();
}
export function toShortISOString(dateString: string): string {
return `${toLongISOString(dateString).slice(0, 10)}Z`;
}
export function toEndOfDay(dateString: string): string {
const date: Date = parseDate(dateString);
date.setDate(date.getDate() + 1);
date.setTime(date.getTime() - 1);
return date.toISOString();
}
export function addCurrentTime(date: Date): Date {
const now: Date = new Date();
date.setUTCHours(now.getUTCHours());
date.setUTCMinutes(now.getUTCMinutes());
date.setUTCSeconds(now.getUTCSeconds());
date.setUTCMilliseconds(now.getUTCMilliseconds());
return date;
}
export function parseDate(dateString: string): Date {
const millis = Date.parse(dateString);
const date: Date = new Date(millis);
return date;
}
/**
* Converts '2017-01-20' to FimsDate
* @param dateString
*/
export function toFimsDate(dateString: string): FimsDate {
const chunks: string[] = dateString ? dateString.split('-') : [];
return {
year: chunks.length ? Number(chunks[0]) : undefined,
month: chunks.length ? Number(chunks[1]) : undefined,
day: chunks.length ? Number(chunks[2]) : undefined,
};
}
export function toISOString(fimsDate: FimsDate): string {
return formatDate(fimsDate.year, fimsDate.month, fimsDate.day);
}
function formatDate(year: number, month: number, day: number): string {
return `${year}-${addZero(month)}-${addZero(day)}`;
}
function addZero(value: number): string {
return ('0' + value).slice(-2);
}