Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Presbiopia - la 43 ani ?

Termen transcriere autovehicul

Cazare Timisoara pe 4-5 zile

Primele zile ale internetului per...
 Ditra 25

Casti USB-C ptr A-54

Aplicatie medicala / asistent med...

De ce vor atația politicieni...
 ERR_ADDRESS_UNREACHABLE

Legea 18/1968 Se mai aplica?

Digi conectare 2 routere prin fir

Succesiune notar versus instanta ...
 Montaj aer conditionat in balcon ...

Cont curent mulți valuta far...

Sugestii plan casa

Experiente cu firme care cumpara ...
 

Interval de timp

- - - - -
  • Please log in to reply
23 replies to this topic

#1
mellbo

mellbo

    Member

  • Grup: Members
  • Posts: 885
  • Înscris: 07.06.2010
Buna. Va cer o idee despre cum as putea implementa o anumita situatie legata de...timp.

Va anunt de la inceput, ca este posibil sa nu fiu inteles, pentru ca imi e dificil sa explic cam ce vreau...

"Babeste" vorbind, lucrez la un site in Javascript/JQuery/Bootstrap/PHP/MySQL , site care la un moment dat, mai multi utilizatori, mai exact vanzatori, vor introduce date intr-o baza de date.

Ca sa explic mai putin tehnic, as vrea sa fac o separatie intre ziua A si ziua B de timp, dar sa nu folosesc interval-ul natural de timp. ora 00:00:00 cand se schimba si data.

Eu as vrea sa am interval declarat zilnic de la ora 07 pana a doua zi la ora 07.
Dar cum ? Am incercat mai multe idei, dar nu au functionat.

Exemple
29.03.2020 11:00:00 =>
intervalul raportat va fi deci: [ 29.03.2020 07:00:00 - 30.03.2020 07:00:00]

29.03.2020 23:00:00 =>
intervalul raportat va fi deci:  [29.03.2020 07:00:00 - 30.03.2020 07:00:00]

30.03.2020 01:00:00
intervalul raportat va fi deci: [30.03.2020 07:00:00 - 31.03.2020 07:00:00]

adica avem o eroare. unde este intervalul 00-07 din [29.03.2020 07:00:00 - 30.03.2020 07:00:00]


in cazul in care m-a inteles cineva ... ideea poate fi in orice limbaj, important ideea.

#2
dexterash

dexterash

    --something---

  • Grup: Senior Members
  • Posts: 22,912
  • Înscris: 19.08.2004
Pai la tine e problema de logica de programare, nu de tehnologie.

Ia vezi in cazul respectiv in care ai eroare ce ai de facut...

#3
pasilla

pasilla

    Superior Member

  • Grup: Senior Members
  • Posts: 55,778
  • Înscris: 31.03.2012

View Postmellbo, on 02 ianuarie 2021 - 14:05, said:

30.03.2020 01:00:00
intervalul raportat va fi deci: [30.03.2020 07:00:00 - 31.03.2020 07:00:00]
Nu are cum sa raporteze acel interval.

#4
sorin147

sorin147

    Senior Member

  • Grup: Senior Members
  • Posts: 6,349
  • Înscris: 11.08.2003
O noua coloana in care ai data de munca calculata dupa ce formula ai tu. Faci un update dupa cum vrei si apoi te uiti doar in coloana asta si-ti construiesti rapoartele.
Daca nu e greseala cum le-ai dat tu (vezi mesajul de mai sus) atunci da mai multe exemple sa intelegem.

Edited by sorin147, 02 January 2021 - 15:45.


#5
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
Scazi 7 ore dintr-o data cu ora si rotunjesti in jos la data?

#6
mellbo

mellbo

    Member

  • Grup: Members
  • Posts: 885
  • Înscris: 07.06.2010
știam ca nu o sa fiu inteles. si Nu, nu e vina voastră, e a mea ca nu stiu sa explic. exemplele mele nu fac parte dintr-un cod, am spus acolo ca e.. băbește.

dani, am încercat varianta cu orele plus/minus de mi-a venit acru, aceasi problema ca mai sus. se pierd ore in momentul in care se schimba ziua. ca sa înțelegi, gândește-te ce se întâmplă daca
realTime=17.05.2020 07:30:00 => 17.05.2020 02:00:00 // ! eroare..
macar tu te-ai prins ce vrea nebunu'.

eu, am găsit o soluție pentru cazul meu, dar nu prea imi place.
am pus un buton cu rolul de raport zilnic, care pur și simplu imi stocheaza un timestamp, pe care il consider fromDate. adica din momentul ala si pana apasă inca o data pe buton se va considera aceasi zi de munca.

as mai putea sa compar cu 8-10 ore de munca pe acolo variante, dar vroiam sa fie automat. sa se schimbe ziua la fiecare ora 7 nu la 12.

Probabil se poate dar nu ma duce azi capul. Practic asta vreau. Sa se schimbe ziua in proiect la ora 7 dimineata, nu la 00.

Poate începeți sa ma înțelegeți cumva..

Edited by mellbo, 02 January 2021 - 20:38.


#7
sorin147

sorin147

    Senior Member

  • Grup: Senior Members
  • Posts: 6,349
  • Înscris: 11.08.2003
Nu merge s-o reglezi din ora serverului, sa-l muti pe alt fus orar?
Da mai multe exemple din ce ai si cum vrei sa apara ca mai mult m-ai bagat in ceata cu realTime=17.05.2020 07:30:00 => 17.05.2020 02:00:00 // ! eroare... Posted Image

Edited by sorin147, 02 January 2021 - 20:48.


#8
dexterash

dexterash

    --something---

  • Grup: Senior Members
  • Posts: 22,912
  • Înscris: 19.08.2004
E un amarat de calcul matematic, ce naiba?! Nu trebuie nici artificii de timezone nici altceva. In cel mai rău caz, dacă nu iese nicicum, matematica direct pe LinuxTime/UTC.

#9
mellbo

mellbo

    Member

  • Grup: Members
  • Posts: 885
  • Înscris: 07.06.2010
ok băieți. e ceață, e cum credeți voi.
poate ca e un amarat de calcul. sau poate ca nu. in realitate, doar nu ma pot face înțeles. oricum stiam ca asa va fi..

nu stiu cum sa va mai explic, imi pare rau. nu sunt deloc începător băieți, dacă era ceva banal nu eram aici. problema ca nu stiu cum sa explic situația.

sa explic fraza

realTime=17.05.2020 07:30:00 => 17.05.2020 02:00:00 // ! eroare.

spunea cineva mai sus sa scad 7ore.
si avem asa. daca in realitate este data 17.05.2020 ora 07:30, si noi scadem din timp (in exemplul de sus 4.5 ore) va fi ca si cand ziua noastră nu s-a terminat. Nu se poate cu scaderi sau adunari sau margini pe timp.

de ce nu încercați scurt un javascript ceva sa vedeti cum e. asa din cap si eu am crezut initial ca e banal. in realitate cred ca trebuie refacuta biblioteca de time si folosit unix/utc.

o sa incerc ceva cu UNIX dar nu prea am speranța.

Edited by mellbo, 02 January 2021 - 22:12.


#10
dexterash

dexterash

    --something---

  • Grup: Senior Members
  • Posts: 22,912
  • Înscris: 19.08.2004
Matematica in Javascript e diferita?!

Din ce inteleg eu, tu vrei sa afli carui interval (de secunde) ii apartine o valoare. Foarte bine, ce te retine?! Ai o valoare de start pentru intervalul cu nr0 si apoi tot incrementezi acea valoare cu nr de secunde dintr-o zi pana valoarea cautata de tine pica pe intervalul curent. Si, la final, afli traduci intervalul curent in ce vrei tu. Chiar nu mi se pare deloc complicat - asta daca nu esti incepator cu adevarat. Altfel...

Mai stiu eu programatori d'astia de Python, de C++, de ce o fi... orice, doar programatori nu. Dat fiind ca la partea cu logica pica cu brio.
Scriitori? Ah, da, dupa dictare, se descurca sa scrie. Dar cam atat...

Edited by dexterash, 02 January 2021 - 22:16.


#11
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,428
  • Înscris: 10.08.2005
epoch, (scazi cele 7*3600 secunde), incadrezi unde trebuie, adaugi secundele inapoi

#12
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
Alta varianta: faci 2 comparatii. Compari 17.05.2020 07:30:00 cu [16.05.2020 07:00:00 - 17.05.2020 07:00:00] si cu [17.05.2020 07:00:00 - 18.05.2020 07:00:00]. Vezi in care din ele se incadreaza.

#13
sorin147

sorin147

    Senior Member

  • Grup: Senior Members
  • Posts: 6,349
  • Înscris: 11.08.2003
Am creat o tabela cu 2 coloane si m-am jucat putin cu datele.
Am atasat si exportul din baza (redenumeste-l in sql (nu pot sa-l atasez direct sql)) si hai sa vedem ce vrei.

Attached Files



#14
mellbo

mellbo

    Member

  • Grup: Members
  • Posts: 885
  • Înscris: 07.06.2010
voi analiza cu atentie tot ce mi-ați scris. pana atunci fac următoarele precizari.

-nu avem o valoare de start sau stop după care sa calculam.
- ca sa fac o valoare care se incrementeaza automat și schimba ziua.. cine trigereaza eventul daca nu intra cineva?
- singura variabila ce o am e datatime, dar in rest ce trigereaza un început sau sfârșit. adica pana la urma ce notez?

-ziua noastră incepe la ora 7 si se termina a doua zi la 6:59 indiferent cand primește utilizatorul ce are de primit zilnic. pot nota faptul ca a primit in ziua X dar nu rezolva problema schimbării zilei doar a doua zi la 7. pentru ca nu are cine trigera eventul la ora 7.. nu va ganditi la server, trebuie sa fie independent de server treaba asta. cu toate ca era banal daca fac un timer pe server..

am mai scris mai sus ca deocamdată am rezolvat problema asta cu butonul de raport zilnic care trigereaza sfarsitul "zilei" indiferent de ora, sau ca ziua are 40 de ore..

problema este ca NU am o referinta fixa. decat in utc si cred ca asta e rezolvarea cumva..

Edited by mellbo, 02 January 2021 - 23:57.


#15
mellbo

mellbo

    Member

  • Grup: Members
  • Posts: 885
  • Înscris: 07.06.2010
ma gandeam la ceva.
poate ca despre asta imi spuneti.

creez un câmp in db, numeric care conține secundele din unix care reprezinta ultima ora de 07:00.
apoi, cand intra un user, la request, calculez daca au trecut mai mult sau egal cu 86,400 secunde fata de referinta. daca da, notam valoarea initiala+86,400 drept referință următoarei zile. comparațiile le fac doar in unix..si cred ca merge

problema va fi si ramane daca nu intra nici un utilizator. eventual incrementez mai mult..in funcție de cat a trecut.

Edited by mellbo, 03 January 2021 - 00:13.


#16
dexterash

dexterash

    --something---

  • Grup: Senior Members
  • Posts: 22,912
  • Înscris: 19.08.2004
Incearca sa rescrii cerintele. Ceva nu se pupa.

Referinta poate fi fixa, o constanta, iar valorile ulterioare se pot calcula, fara a fi nevoie de a fi stocate.

#17
mellbo

mellbo

    Member

  • Grup: Members
  • Posts: 885
  • Înscris: 07.06.2010
mmm ca bine zici. nici măcar nu trebuie sa trigerez sau notez asa. îmi fac o constanta, ziua instalarii ora 7. si de acolo... fiecare 86400 e alta zi.

#18
dexterash

dexterash

    --something---

  • Grup: Senior Members
  • Posts: 22,912
  • Înscris: 19.08.2004
Incepi sa te prinzi...

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate