根据时区时间选择数据

时间:2017-09-02 16:57:25

标签: mysql node.js sequelize.js

我正在尝试根据users表中保存的时区制作一个在特定时间发送电子邮件的脚本。

我有两张桌子:

users -> id, firstname, lastname, email,  ... , timezone (VARCHAR; America/New_York, Europe/Berlin, ...)
settings -> id, user_id, email_daily_events (TIME), email_daily_task (TIME)

我想根据用户时区的时间从settings表中检索所有字段。

settings.email_daily_eventssettings.email_daily_task中存储应发送邮件的时间。该脚本每分钟都以cron执行。

当脚本检索某些字段时,它会将一些其他数据发送到用户的电子邮件地址。

整个CMS在NodeJS和Sequelize上运行。

我真的不知道该怎么做,任何想法都会非常感激......

1 个答案:

答案 0 :(得分:1)

我建议使用以下模块:

node-cron

var cron = require('node-cron');
cron.schedule('* * * * *', function(){
  console.log('running a task every minute');
});

nodemailer

Simple example : sending a text/html email using node

timezone

  

使用IANA时区数据库在JavaScript中格式化时间。

var tz = require('timezone/loaded'),
    equal = require('assert').equal,
    utc;

// Get POSIX time in UTC.
utc = tz('2012-01-01');

// Convert UTC time to local time in a localize language.
equal(tz(utc, '%c', 'fr_FR', 'America/Montreal'),
      'sam. 31 déc. 2011 19:00:00 EST');

node-cronmysql的组合,每分钟执行一次查询,然后使用nodemailer发送电子邮件。

timezone可能派上用场......