Превратить стандартную дату "ДД / ММ / ГГГГ" в UNIX Time
У нас есть приложения для захвата форм из внешнего интерфейса, которым необходимо передать значение в систему баз данных UNIX.
Поскольку прямой интеграции нет, мы используем Zapier для этого, и она работает хорошо, за исключением преобразования даты, поскольку, поскольку мы кодируем ее в JSON (через веб-крючок Zapier), система баз данных UNIX должна соответствовать формату Unit Date (например, для ДОБ 1/1/1970 нужно записать как "ДОБ": "/ Дата (-39600000+1100)/",)
Задача состоит в том, как преобразовать стандартный DD/MM/YYYY в вышеуказанный формат через zapier (поскольку я использую его для интеграции), чтобы база данных могла принять его без проблем?
1 ответ
Я предполагаю, что формат даты, о котором вы говорите, это формат даты ISO. Это выглядит так - 2018-03-16T00:00:00.000Z
,
Возможно, вы захотите добавить промежуточный шаг для форматирования поля даты, полученного из вашего триггера формы.
Метод 1 - Использование приложения Zapier Formatter:
- Добавьте действие после шага триггера и выберите приложение Formatter. Скриншот
- Выберите опцию даты / времени
- Выберите "Формат" в разделе "Преобразование". В поле ввода выберите поле даты на шаге триггера.
- Установите для форматирования, от формата и часового пояса, как требуется. Скриншот
- Используйте это поле в вашем следующем действии Webhook.
У Zapier есть статья о форматировании дат здесь.
Метод 2 - Использование приложения Code от Zapier: Если вам нужно больше контроля, вы можете использовать приложение Code от Zapier.
- Выберите приложение "Код", выберите "Запустить Javascript".
- Во входных данных установите поле даты из вашего триггерного приложения в свойство с именем "iDate". Скриншот
- В разделе кода скопируйте и вставьте приведенный ниже код.
- В последней строке вы можете изменить
strJSON
текст в любой из других форматов, перечисленных выше. - Используйте вывод поля даты из шага кода в действии Webhook.
var yourDate = inputData.iDate;
var dArr = yourDate.split('/');
var d = Date.parse(`${dArr[2]}-${dArr[1]}-${dArr[0]}`);
//String representation of the Date for JSON
var strJSON = new Date(d).toJSON();
console.log('JSON String Representation: ', strJSON);
//ISO Date Format
var iso = new Date(d).toISOString();
console.log('ISO: ', iso);
//Date String
var str = new Date(d).toDateString();
console.log('Date String: ', str);
//Date String with time
var strTstamp = new Date(d).toString();
console.log('Timestamp String: ', strTstamp);
var output = {date: strJSON};
Обновить:
Вы можете использовать приведенный ниже код в приложении "Код" на Zapier (выполните настройку, как указано выше). Это выведет время в формате, который вы указали в комментарии -39600000+1100
,
var yourDate = inputData.iDate;
var dArr = yourDate.split('/');
//11*60*60*1000 for +11:00 Timezone. It is converting 11 hours into milliseconds.
//If your timezone is +05:30, 5*60*60*1000+(30*60*1000)
var unixTime = new Date(`${dArr[2]}-${dArr[1]}-${dArr[0]} 00:00:00 UTC`).getTime() - (11*60*60*1000);
//If your timezone is not +11:00, swap it below.
var unixWithTZ = `${unixTime}+1100`
console.log('UnixTime: ', unixWithTZ);
console.log('UnixWithTZ: ', unixWithTZ);
var output = {date: unixWithTZ};
Узнайте больше о Unix Time здесь.