2013-07-31 9 views
6

मैं खुले और बंद समय को बचाने के लिए node.js में Sequelize का उपयोग कर रहा हूं। मैं प्रारूप के लिए moment.js का भी उपयोग कर रहा हूँ।यूटीसी दिनांक Sequelize.js

result.open = moment(hours.open, "hh:mma").format("YYYY-MM-DD HH:mm:ss"); 
result.save() 
... 

यह ठीक काम करता है और समय MySQL के datetime स्वरूप में स्वरूपित हो जाता है: एक FindOrCreate मैं यह कर रहा हूँ बदल देते हैं। समस्या तब होती है जब मैं समय प्राप्त करता हूं Seqquelize सोचता है कि यह एक यूटीसी समय है और इसे ईएसटी (मेरा सर्वर टाइमज़ोन) में परिवर्तित करता है।

मैं इसे यूटीसी के रूप में डेटाबेस में जाने और उसी तरह बाहर आने के लिए पसंद करूंगा। क्या मैं कुछ गलत कर रहा हूं? Sequelize इसे यूटीसी में डालने पर क्यों परिवर्तित नहीं करता है लेकिन मानता है कि यह यूटीसी बाहर आ रहा है? इसके अलावा, क्या मेरे सर्वर टाइमज़ोन में कनवर्ट करने का प्रयास करने का कोई तरीका नहीं है?

+0

आप क्या इसका समाधान ढूंढें? मैं एक ही समस्या का सामना कर रहा हूं और मुझे इस पर कोई दस्तावेज नहीं मिल रहा है। –

+0

@ जेफ्रियन मुझे नहीं पता कि नीचे मेरा जवाब बहुत बाद में है, लेकिन मुझे आशा है कि अगर आप अभी भी इसे प्राप्त कर रहे हैं तो यह आपकी समस्या को हल करता है (मुझे उम्मीद नहीं है!) =) – Abdo

उत्तर

0

मुझे एक ही समस्या का सामना करना पड़ा, आप पल गलत इस्तेमाल कर रहे हैं। आपको moment के बजाय moment.utc का उपयोग करना चाहिए।

पल प्रलेखन पर एक नज़र डालें: http://momentjs.com/docs/#/parsing/utc/

result.open = moment.utc(hours.open, "hh:mma").format("YYYY-MM-DD HH:mm:ss"); 
result.save() 
4

मैं जानता हूँ कि यह बहुत देर हो चुकी है, लेकिन यहाँ यह (postgres के साथ इस के साथ संघर्ष कर उन लोगों के लिए है हो सकता है इस के लिए सही दिशा में बात कर सकते हैं अन्य इंजन)

जैसा कि आप जानते हैं कि यूटीसी में पोस्टग्रेज़ स्टोर डेटटाइम हैं।

मेरे लिए यह मुद्दा, Sequelize में नहीं बल्कि pg पैकेज में नहीं हुआ है।

ताकि इसे, अपने sequelize = new Sequelize() लाइन से पहले इस जगह को ठीक करने में

var types = require('pg').types; 
var timestampOID = 1114; 
types.setTypeParser(1114, function(stringValue) { 
    return new Date(Date.parse(stringValue + "0000")); 
}); 

समस्या, मुझे लगता है, कि pg पैकेज new Date(stringValue) जो सर्वर के समय क्षेत्र है, जो गलत है में तारीख रिटर्न कर रहा है, है

अधिक जानकारी के लिए (जब तक यह यूटीसी अपने आप में है), इस सूत्र का संदर्भ लें: https://github.com/brianc/node-postgres/issues/429

0

मैं एक ही समस्या थी। मैं इसे इस तरह से ठीक करने के बाद:

config/sequelize.js:

const sequelize = new Sequelize(database, user, password, { 
host, 
dialect: 'mysql', 
port, 
operatorsAliases, 
dialectOptions: { 
    useUTC: true, // -->Add this line. for reading from database 
}, 
timezone: '+02:00', // -->Add this line. for writing to database 
pool: { 
    max: 10, 
    min: 0, 
    idle: 10000, 
}, 
logging: console.log, 
// define: {}, 
}) 

momentJS (UTC):

const ACCEPT_FORMAT = 'YYYY-MM-DD hh:mm:ss' 
const { start_date, end_date } = req.params 
const start = moment.utc(start_date, ACCEPT_FORMAT) 
const end = moment.utc(end_date, ACCEPT_FORMAT) 
console.log(start) 
console.log(end) 

आशा है कि यह किसी को मदद मिलेगी .... :)

संबंधित मुद्दे