Comments (4)
Impress этим не занимается это драйвер подключения к mySQL в строке подключения (см в /applications/.../config/databases.js) параметр timezone, например 'mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'
Вот тут можно подробнее посмотреть https://github.com/felixge/node-mysql
from impress.
прописал в databases.js "...?timezone=+0400",
запросы по прежнему возвращают даты в UTC (если смотреть json, который приходит с сервера)
клиентская часть делается на angularjs - теперь при отображении используется фильтр "date" и "фильтрованная" дата показана верно (в соответствии с зоной клиента).
в итоге, получается, что все работает правильно - дата/время передается в utc, клиент приводит в правильный вид в соответствии со своей зоной
from impress.
Ничего не понял, добавление timezone к конекшенстрингу БД должно решать проблему, если вы делаете коррекцию даты в нескольких местах, то это может слететь при переносе или повторном развертывании системы.
from impress.
вы совершенно правы: коррекция даты в нескольких местах, но в теории такого
эффекта не должно было получиться (или мне так казалось...)
если коротко - 2 раза дата приводится к UTC 1-toISOString, 2-node-mysql
а подробнее - происходит вот что:
- в интерфейсе создаем дату: Tue May 02 1967 04:00:00 GMT+0400
- перед сохранением в БД конвертирую в ISO (toISOString()) :
"1967-05-02T00:00:00.000Z"
дата приводится к UTC и именно так сохраняется в базе - загружаем сохраненные данные, дата = "1967-05-01T20:00:00.000Z" - node-mysql
думает, что дата со смещением и еще раз приводит к UTC - теперь при отображении все зависит от часов, которые получились после
преобразований
фильтр ангуляра считает что дата в UTC и добавляет смещение:
1967-05-01T20:00:00.000Z
-> (+0400) -> 1967-05-02T00:00:00.000Z, отображается как 02.05.1967
но это только представление данных - сама дата не меняется
в случае, если создана дата Tue May 01 1967 00:00:00 GMT+0400, то
получится такая цепочка:
- Tue May 01 1967 00:00:00 GMT+0400
- 1967-04-30T20:00:00.000Z
- 1967-04-30T16:00:00.000Z
- 1967-04-30T20:00:00.000Z - отображается как 30.04.1967, а должно
01.05.1967
в общем, проблема понятна, нужно правильно ее решить
поэкспериментирую с разными вариантами,
но как-то это не совсем верно - в настройках нужно правильно указывать
локальные параметры, даты хранить в utc, а затем приводить к локальной
тайм-зоне...
12 мая 2014 г., 17:37 пользователь Timur Shemsedinov <
[email protected]> написал:
Ничего не понял, добавление timezone к конекшенстрингу БД должно решать
проблему, если вы делаете коррекцию даты в нескольких местах, то это может
слететь при переносе или повторном развертывании системы.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/40#issuecomment-42832369
.
С уважением,
Игорь
from impress.
Related Issues (20)
- Impress Documentation HOT 1
- Support for custom `context` provider HOT 4
- Support for custom `error` catcher for api HOT 10
- Error on context client start session HOT 1
- Serve large files HOT 1
- Support multiple SSL certificates
- Support certbot HOT 1
- Graceful shutdown start message
- Error in static serve
- Refactor codebase for consistent return HOT 1
- Autocreate folder: application/tasks
- Issue after migration to v3 HOT 1
- Metacom doesn't return an array with some objects; it triggers a timeout.
- Restart on EADDRINUSE HOT 4
- Integration with native node.js test runner
- Template pages for HTTP errors
- Template for virtual folders
- Error processing url in static directory HOT 4
- HEADERS_SENT on node 20, server static from empty folder
- Maximum call stack size exceeded
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from impress.