Git Product home page Git Product logo

Comments (4)

tshemsedinov avatar tshemsedinov commented on May 18, 2024

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.

stokaboka avatar stokaboka commented on May 18, 2024

прописал в databases.js "...?timezone=+0400",
запросы по прежнему возвращают даты в UTC (если смотреть json, который приходит с сервера)

клиентская часть делается на angularjs - теперь при отображении используется фильтр "date" и "фильтрованная" дата показана верно (в соответствии с зоной клиента).

в итоге, получается, что все работает правильно - дата/время передается в utc, клиент приводит в правильный вид в соответствии со своей зоной

from impress.

tshemsedinov avatar tshemsedinov commented on May 18, 2024

Ничего не понял, добавление timezone к конекшенстрингу БД должно решать проблему, если вы делаете коррекцию даты в нескольких местах, то это может слететь при переносе или повторном развертывании системы.

from impress.

stokaboka avatar stokaboka commented on May 18, 2024

вы совершенно правы: коррекция даты в нескольких местах, но в теории такого
эффекта не должно было получиться (или мне так казалось...)

если коротко - 2 раза дата приводится к UTC 1-toISOString, 2-node-mysql

а подробнее - происходит вот что:

  1. в интерфейсе создаем дату: Tue May 02 1967 04:00:00 GMT+0400
  2. перед сохранением в БД конвертирую в ISO (toISOString()) :
    "1967-05-02T00:00:00.000Z"
    дата приводится к UTC и именно так сохраняется в базе
  3. загружаем сохраненные данные, дата = "1967-05-01T20:00:00.000Z" - node-mysql
    думает, что дата со смещением и еще раз приводит к UTC
  4. теперь при отображении все зависит от часов, которые получились после
    преобразований
    фильтр ангуляра считает что дата в 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, то
получится такая цепочка:

  1. Tue May 01 1967 00:00:00 GMT+0400
  2. 1967-04-30T20:00:00.000Z
  3. 1967-04-30T16:00:00.000Z
  4. 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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.