0
votes

POCO DateTimeformatter - Imprimez horodatage avec le fuseau horaire actuel

Comment imprimer un poco :: horodatage code> avec POCO :: DateTimeformatter code> dans une date de date formatée basée sur le fuseau horaire actuel?

J'ai un print_pretty_datetime (const poco :: horodatage et maintenant) code> où je recevrai un poco :: horodatage code> donc je ne peux donc pas utiliser de poco :: localdateTime code> Malheureusement. P>

MCVE: P>

SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
Poco 1.9.0


0 commentaires

3 Réponses :


2
votes

Obtenez heure locale par POCO :: localDateTime code>, puis lisez son horodatage et transmettez-le dans Formatter:

 std::string dt_now = Poco::DateTimeFormatter::format(
   now,
   "%H:%M:%S %z,%Z",
   Poco::Timezone::tzd()
 );


1 commentaires

Hé bon point (je l'ai également mentionné dans ma réponse). J'ai édité ma question telle que ce n'était pas assez clair. Je n'ai aucun contrôle sur le (code> horodatage : C'est un paramètre que je recevrai dans ma fonction, donc en fonction de celui-ci, je dois imprimer la date de date actuelle.



0
votes

D'accord, si vous n'avez pas besoin d'utiliser un POCO :: Timeestamp CODE>, une solution peut simplement utiliser un POCO :: localdateTetime code>:

#include "Poco/LocalDateTime.h"
#include "Poco/DateTimeFormatter.h"
#include "Poco/DateTimeFormat.h"

#include <iostream>
#include <string>

int main()
{
    Poco::LocalDateTime now;

    std::string dt_now = Poco::DateTimeFormatter::format(
      now,
      Poco::DateTimeFormat::SORTABLE_FORMAT
    );

    std::cout << dt_now << '\n';
    return 0;
}


0 commentaires

1
votes

Vous pouvez créer un poco :: localdateTime code> dans le fuseau horaire actuel du système à partir d'un POCO :: horodatage code> via un intermédiaire poco :: Datetime code> objet.

#include "Poco/LocalDateTime.h"
#include "Poco/DateTime.h"
#include "Poco/DateTimeFormat.h"
#include "Poco/DateTimeFormatter.h"
#include <iostream>

int main(int argc, char** argv)
{
    Poco::Timestamp ts;
    Poco::DateTime dt(ts);
    Poco::LocalDateTime ldt(dt);

    std::string str = Poco::DateTimeFormatter::format(ldt, Poco::DateTimeFormat::SORTABLE_FORMAT);
    std::cout << str << std::endl;

    return 0;
}


1 commentaires

Cool, ne pouvait pas comprendre le passage de horodatage à localDateTime