সি ++ এ কীভাবে বর্তমান সময় এবং তারিখ পাবেন?


454

সি ++ তে বর্তমান তারিখ এবং সময় পাওয়ার জন্য কি কোনও ক্রস-প্ল্যাটফর্মের উপায় আছে?


2
যদি ওকোনাল এখনও সক্রিয় থাকে তবে তার সি ++ 11 পদ্ধতির গ্রহণযোগ্য উত্তরটি পরিবর্তন করা উচিত। এই প্রশ্নটি এখনও অনেক দর্শন পেয়েছে বলে মনে হচ্ছে।
জেএসকোয়ার্ড


3
@ জেএসকিয়ারড এমনকি এই সময়ের পরে এখন এই প্রশ্নের দিকে তাকিয়েও আমি tmকাঠামোগত ব্যবহার করে সি পদ্ধতির আরও ভাল দেখতে পেয়েছি । প্রশ্নটি তারিখ এবং সময় পাওয়ার বিষয়ে সত্ত্বেও সি ++ 11 পদ্ধতিটি কি কেবল ইউনিক্স টাইমস্ট্যাম্পকে (যুগ যুগের সময়) দেয় না?
অ্যান্ডেরো

বাহ, এই প্রশ্নের 1,110,886 বার দেখা হয়েছে! মানুষ সত্যই সি ++ ভালবাসে!
ব্যবহারকারী 123

উত্তর:


591

সি ++ 11 এ আপনি ব্যবহার করতে পারেন std::chrono::system_clock::now()

উদাহরণ ( en.cppreferences.com থেকে অনুলিপি করা ):

#include <iostream>
#include <chrono>
#include <ctime>    

int main()
{
    auto start = std::chrono::system_clock::now();
    // Some computation here
    auto end = std::chrono::system_clock::now();

    std::chrono::duration<double> elapsed_seconds = end-start;
    std::time_t end_time = std::chrono::system_clock::to_time_t(end);

    std::cout << "finished computation at " << std::ctime(&end_time)
              << "elapsed time: " << elapsed_seconds.count() << "s\n";
}

এটি এমন কিছু মুদ্রণ করা উচিত:

finished computation at Mon Oct  2 00:59:08 2017
elapsed time: 1.88232s

28
এটি আপভোট করা উচিত কারণ এটি বর্তমান সি ++ এর মধ্যে সবচেয়ে বহনযোগ্য এবং সহজ উপায়।
জোহানেস

4
@ জোহানেস, সবেমাত্র আমার যোগ করা হয়েছে। এই হারে, 15 ই আগস্ট 2017, 16:31 ইউটিসি :-)
মার্টিন ব্রডহ

62
প্রাপ্ত উত্তরটি ব্যবহারের উদাহরণ ছাড়াই এই উত্তরটি খুব অল্প ব্যবহারযোগ্য। যেমন আপনি কীভাবে এটি মুদ্রণ করতে পারেন, স্থানীয় সময় পাবেন, অন্যান্য তারিখ / সময়ের সাথে তুলনা করতে পারেন?
স্টিড

32
এটি সবচেয়ে খারাপ উত্তর। এটি অন্যান্য সি ++ 11 টি উত্তরকে একটি সদৃশ করে তোলে এবং এখনও এটি 'লিঙ্কটি' হওয়ায় এটি কিছুই ব্যাখ্যা করে না।
v010dya

10
এই উত্তরটির চেয়ে বেশি পয়েন্ট পাওয়ার উপায় নেই। ওপি জিজ্ঞাসা করছিল "C ++ এ বর্তমান তারিখ এবং সময় পাওয়ার জন্য কোনও ক্রস-প্ল্যাটফর্মের উপায় আছে কি?" এই প্রশ্ন আপনাকে ঠিক এই দেয়। আপনি কীভাবে কোনও stringথেকে পাবেন stream, বা কীভাবে সঠিকভাবে ফর্ম্যাট করবেন সে সম্পর্কে আপনার যদি সন্দেহ হয় time_point<>তবে এগিয়ে যান এবং এর পরে আরও একটি প্রশ্ন জিজ্ঞাসা করুন বা গুগল।
তারাক

481

সি ++ সি এর সাথে তার তারিখ / সময় ফাংশনগুলি ভাগ করে দেয় টিএম কাঠামো সম্ভবত কোনও সি ++ প্রোগ্রামারের সাথে কাজ করা সবচেয়ে সহজ - নিম্নলিখিত প্রিন্টগুলি আজকের তারিখ:

#include <ctime>
#include <iostream>

int main() {
    std::time_t t = std::time(0);   // get time now
    std::tm* now = std::localtime(&t);
    std::cout << (now->tm_year + 1900) << '-' 
         << (now->tm_mon + 1) << '-'
         <<  now->tm_mday
         << "\n";
}

26
ctime()আপনি যদি তারিখের স্ট্রিং চান তবে এই উত্তরের সাথে একসাথে ব্যবহার করুন ।
রালফিথিনেঞ্জ

3
উদাহরণটি মোছার বিষয়ে struct tmকী এটির উপর কেবল কল কল করা সম্ভব?
পেটর

4
@ পিটার আপনাকে নতুন দিয়ে বরাদ্দ করা মেমরিতে কেবল মুছুন কল করতে হবে।
ইহানেই

4
ঠিক আছে তবে তবুও আপনি লোকালটাইম () থেকে পয়েন্টার পান তাই কাঠামোগুলি উদাহরণটি গাদাতে বরাদ্দ পায় নাকি? যার অর্থ আপনি যদি কোনওভাবে না করেন তবে এটি পরিষ্কার হয় না। আমি deleteএটিতে কখনই ব্যবহার (সি ++ কীওয়ার্ড) বলিনি, আমি কেবল ভেবেছিলাম এটি কোনওভাবে মুছে ফেলা উচিত :) বা আপনার জন্য কে এটি করতে চলেছে?
পেটর

9
@Petr আপনি কারণ এটি স্ট্যাটিক্যালি বরাদ্দ করা হয়েছে কারণ এটি ডি-এলোকেট প্রয়োজন হবে না, এখানে এই বিষয়ের জন্য দেখতে stackoverflow.com/questions/8694365/...
Brandin

180

আপনি বর্তমান তারিখ / সময় পেতে নিম্নলিখিত ক্রস প্ল্যাটফর্ম কোড ব্যবহার করতে পারেন:

#include <iostream>
#include <string>
#include <stdio.h>
#include <time.h>

// Get current date/time, format is YYYY-MM-DD.HH:mm:ss
const std::string currentDateTime() {
    time_t     now = time(0);
    struct tm  tstruct;
    char       buf[80];
    tstruct = *localtime(&now);
    // Visit http://en.cppreference.com/w/cpp/chrono/c/strftime
    // for more information about date/time format
    strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);

    return buf;
}

int main() {
    std::cout << "currentDateTime()=" << currentDateTime() << std::endl;
    getchar();  // wait for keyboard input
}

আউটপুট:

currentDateTime()=2012-05-06.21:47:59

তারিখ / সময় ফর্ম্যাট সম্পর্কে আরও তথ্যের জন্য দয়া করে এখানে যান


হ্যালো. "কারেন্টডেটটাইম ()" ফাংশনের ভিতরে এই "বুফ" বরাদ্দ নিয়ে আমার কিছুটা সমস্যা আছে। ফাংশন ফিরে আসার পরে এটি কীভাবে অবিচল থাকার কথা? ধন্যবাদ.
Léa Massiot

7
রিটার্নের ধরণটি "কনস্ট স্ট্যান্ড :: স্ট্রিং", সুতরাং এটি মূল্য দিয়ে ফেরত দেওয়া হয় এবং তারপরে এটি প্রকাশের আগে বাফারের একটি অনুলিপি তৈরি করা হয়।
ব্যারানকুইরো

3
ফেরত constমান কেন ? এটা উদ্দেশ্যহীন।
অরবিটে লাইটনেস রেস

প্লাস প্ল্যাটফর্ম সমাধানের জন্য প্লাস 1!
জিয়াগল

139

এসটিডি সি লাইব্রেরি সরবরাহ করে time()। এটি যুগের কয়েক সেকেন্ড পরে তারিখে রূপান্তরিত হতে পারে এবং H:M:Sস্ট্যান্ডার্ড সি ফাংশন ব্যবহার করে। বুস্ট এছাড়াও আছে একটি সময় / তারিখ গ্রন্থাগার আপনি চেক করতে পারেন।

time_t  timev;
time(&timev);

24
নীচের আননের উত্তরের আরও ভাল কাঠামো রয়েছে এবং এটি একটি আরও ভাল উদাহরণ সরবরাহ করে।
MDTech.us_MAN 2

2
এছাড়াও, তিনি সি ++ সি নয়
জেটার্ম

2
@ জেটার্ম ঠিক আছে, সি এবং সি ++ একই সময় গ্রন্থাগারটি ভাগ করে নিন, এটি বিভিন্ন আমদানির নামের বিষয় এবং এটি
জোসেফ ফারাহ

31

সি ++ স্ট্যান্ডার্ড লাইব্রেরি সঠিক তারিখের প্রকার সরবরাহ করে না। সি ++ সি থেকে তারিখ এবং সময় ম্যানিপুলেশনের জন্য স্ট্রাকস এবং ফাংশনগুলির উত্তরাধিকার সূত্রে প্রাপ্ত হয়, একাধিক তারিখ / সময় ইনপুট এবং আউটপুট ফাংশন যা স্থানীয়করণ বিবেচনায় নেয়।

// Current date/time based on current system
time_t now = time(0);

// Convert now to tm struct for local timezone
tm* localtm = localtime(&now);
cout << "The local date and time is: " << asctime(localtm) << endl;

// Convert now to tm struct for UTC
tm* gmtm = gmtime(&now);
if (gmtm != NULL) {
cout << "The UTC date and time is: " << asctime(gmtm) << endl;
}
else {
cerr << "Failed to get the UTC date and time" << endl;
return EXIT_FAILURE;
}

25

একটি পুরানো প্রশ্নের নতুন উত্তর:

কোন টাইমজোনটিতে প্রশ্নটি নির্দিষ্ট করা হয়নি। দুটি যুক্তিসঙ্গত সম্ভাবনা রয়েছে:

  1. ইউটিসি-তে
  2. কম্পিউটারের স্থানীয় সময় অঞ্চল।

1 এর জন্য, আপনি এই তারিখের পাঠাগার এবং নিম্নলিখিত প্রোগ্রামটি ব্যবহার করতে পারেন :

#include "date.h"
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std::chrono;
    std::cout << system_clock::now() << '\n';
}

যা আমার জন্য কেবল আউটপুট:

2015-08-18 22:08:18.944211

তারিখের পাঠাগারটি মূলত কেবলমাত্র একটি স্ট্রিমিং অপারেটর যুক্ত করে std::chrono::system_clock::time_point। এটি আরও অনেক দুর্দান্ত কার্যকারিতা যুক্ত করে, তবে এটি এই সাধারণ প্রোগ্রামে ব্যবহৃত হয় না।

আপনি যদি 2 (স্থানীয় সময়) পছন্দ করেন তবে একটি টাইমজোন লাইব্রেরি রয়েছে যা তারিখের লাইব্রেরির শীর্ষে তৈরি করে । এই উভয় লাইব্রেরিই ওপেন সোর্স এবং ক্রস প্ল্যাটফর্ম , ধরে নিলাম সংকলক সি ++ 11 বা সি ++ 14 সমর্থন করে।

#include "tz.h"
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std::chrono;
    auto local = make_zoned(current_zone(), system_clock::now());
    std::cout << local << '\n';
}

আমার জন্য যা কেবলমাত্র আউটপুট:

2015-08-18 18:08:18.944211 EDT

ফলাফলের প্রকারটি make_zonedহ'ল date::zoned_timeযা একটি date::time_zoneএবং ক এর জুটি std::chrono::system_clock::time_point। এই যুগলটি স্থানীয় সময়কে উপস্থাপন করে তবে আপনি কীভাবে এটি অনুসন্ধান করে তার উপর নির্ভর করে ইউটিসিকেও উপস্থাপন করতে পারে।

উপরের আউটপুটটির সাহায্যে আপনি দেখতে পাচ্ছেন যে আমার কম্পিউটারটি বর্তমানে টাইমজোনটিতে ইউটিসি -4 এইচ অফসেট এবং ইডিটির সংক্ষিপ্তসার সহ রয়েছে।

যদি অন্য কিছু টাইমজোন পছন্দসই হয় তবে তাও সম্পন্ন করা যায়। উদাহরণস্বরূপ সিডনি, অস্ট্রেলিয়ায় বর্তমান সময়টি সন্ধানের জন্য অস্ট্রেলিয়া কেবল ভেরিয়েবলের নির্মাণ পরিবর্তন localকরে:

auto local = make_zoned("Australia/Sydney", system_clock::now());

এবং আউটপুট এতে পরিবর্তন হয়:

2015-08-19 08:08:18.944211 AEST

সি ++ 20 এর জন্য আপডেট

এই লাইব্রেরিটি এখন মূলত সি ++ ২০ এর জন্য গৃহীত হয়েছে। নেমস্পেস dateচলে গেছে এবং সবই std::chronoএখন নেমস্পেসে রয়েছে । এবং zoned_timeজায়গায় ব্যবহার করুন make_time। হেডার ছাড়ুন "date.h"এবং "tz.h"এবং মাত্র ব্যবহার <chrono>

আমি যখন এটি লিখছি, আংশিক বাস্তবায়ন কিছু প্ল্যাটফর্মে সবেমাত্র শুরু হয়েছে।


localtimeআমার টাইমজোনটিতে আমাকে সময় দেওয়া উচিত নয় ?
জোনাথন মে

হ্যাঁ, localtimeহবে প্রায় সবসময় আপনার সময় দ্বিতীয় স্পষ্টতা আপনার স্থানীয় সময় অঞ্চল মধ্যে দেব। থ্রেডস্টিফটি ইস্যুগুলির কারণে এটি কখনও কখনও ব্যর্থ হয় এবং এটি সাবসেকেন্ড যথার্থতার জন্য কখনই কাজ করবে না।
হাওয়ার্ড হিনান্ট


16
auto time = std::time(nullptr);
std::cout << std::put_time(std::localtime(&time), "%F %T%z"); // ISO 8601 format.

বর্তমান সময়টি হয় হয় ব্যবহার করুন std::time()বা std::chrono::system_clock::now()(বা অন্য কোনও ঘড়ির ধরণ ) পান।

std::put_time()(সি ++ 11) এবং strftime()(সি) times সময়গুলিকে আউটপুট দেওয়ার জন্য প্রচুর বিন্যাস সরবরাহ করে।

#include <iomanip>
#include <iostream>

int main() {
    auto time = std::time(nullptr);
    std::cout
        // ISO 8601: %Y-%m-%d %H:%M:%S, e.g. 2017-07-31 00:42:00+0200.
        << std::put_time(std::gmtime(&time), "%F %T%z") << '\n'
        // %m/%d/%y, e.g. 07/31/17
        << std::put_time(std::gmtime(&time), "%D"); 
}

বিন্যাসগুলির ক্রমটি গুরুত্বপূর্ণ:

std::cout << std::put_time(std::gmtime(&time), "%c %A %Z") << std::endl;
// Mon Jul 31 00:00:42 2017 Monday GMT
std::cout << std::put_time(std::gmtime(&time), "%Z %c %A") << std::endl;
// GMT Mon Jul 31 00:00:42 2017 Monday

এর বিন্যাসগুলি strftime()একই রকম:

char output[100];
if (std::strftime(output, sizeof(output), "%F", std::gmtime(&time))) {
    std::cout << output << '\n'; // %Y-%m-%d, e.g. 2017-07-31
}

প্রায়শই মূলধন বিন্যাসটির অর্থ "সম্পূর্ণ সংস্করণ" এবং ছোট হাতের অর্থ সংক্ষিপ্তসার (যেমন Y: 2017, y: 17)।


স্থানীয় সেটিংস আউটপুট পরিবর্তন করে:

#include <iomanip>
#include <iostream>
int main() {
    auto time = std::time(nullptr);
    std::cout << "undef: " << std::put_time(std::gmtime(&time), "%c") << '\n';
    std::cout.imbue(std::locale("en_US.utf8"));
    std::cout << "en_US: " << std::put_time(std::gmtime(&time), "%c") << '\n';
    std::cout.imbue(std::locale("en_GB.utf8"));
    std::cout << "en_GB: " << std::put_time(std::gmtime(&time), "%c") << '\n';
    std::cout.imbue(std::locale("de_DE.utf8"));
    std::cout << "de_DE: " << std::put_time(std::gmtime(&time), "%c") << '\n';
    std::cout.imbue(std::locale("ja_JP.utf8"));
    std::cout << "ja_JP: " << std::put_time(std::gmtime(&time), "%c") << '\n';
    std::cout.imbue(std::locale("ru_RU.utf8"));
    std::cout << "ru_RU: " << std::put_time(std::gmtime(&time), "%c");        
}

সম্ভাব্য আউটপুট ( কলিরু , সংকলক এক্সপ্লোরার ):

undef: Tue Aug  1 08:29:30 2017
en_US: Tue 01 Aug 2017 08:29:30 AM GMT
en_GB: Tue 01 Aug 2017 08:29:30 GMT
de_DE: Di 01 Aug 2017 08:29:30 GMT
ja_JP: 2017年08月01日 08時29分30秒
ru_RU: Вт 01 авг 2017 08:29:30

আমি std::gmtime()ইউটিসিতে রূপান্তর করার জন্য ব্যবহার করেছি । std::localtime()স্থানীয় সময় রূপান্তর করতে সরবরাহ করা হয়।

সাবধান! কেউ য়েন asctime()/ ctime()যা অন্যান্য উত্তর উল্লেখ হিসাবে বর্তমানে অবচিত এবং চিহ্নিত হয় strftime()পছন্দের দিতে হবে।


14
#include <stdio.h>
#include <time.h>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  printf ( "Current local time and date: %s", asctime (timeinfo) );

  return 0;
} 

12

হ্যাঁ এবং আপনি বর্তমানে ইমপুইড লোকেলের দ্বারা নির্দিষ্ট ফর্ম্যাটিং বিধিগুলি সহ এটি করতে পারেন:

#include <iostream>
#include <iterator>
#include <string>

class timefmt
{
public:
    timefmt(std::string fmt)
        : format(fmt) { }

    friend std::ostream& operator <<(std::ostream &, timefmt const &);

private:
    std::string format;
};

std::ostream& operator <<(std::ostream& os, timefmt const& mt)
{
    std::ostream::sentry s(os);

    if (s)
    {
        std::time_t t = std::time(0);
        std::tm const* tm = std::localtime(&t);
        std::ostreambuf_iterator<char> out(os);

        std::use_facet<std::time_put<char>>(os.getloc())
            .put(out, os, os.fill(),
                 tm, &mt.format[0], &mt.format[0] + mt.format.size());
    }

    os.width(0);

    return os;
}

int main()
{
    std::cout << timefmt("%c");
}

আউটপুট: Fri Sep 6 20:33:31 2013


1
এটি হ'ল আইএমএইচও, এটি সর্বোত্তম উত্তর, যেহেতু এটিই একমাত্র লোকাল সেটিংসকে সম্মান করে এবং কারণ এটি বিশদে এমন মনোযোগ দিয়ে প্রোগ্রাম করা হয় (আপনি ostream::sentryএটি প্রায়শই দেখতে পাবেন না )।
দেবসোলার

ধন্যবাদ ডেভসোলার আমি যদিও এটি সেরা না বলব। আমি আরও ভাল বাস্তবায়ন দেখেছি। কিন্তু আমি মনে করি একটি উদাহরণ জন্য :) এই যথেষ্ট
0x499602D2

আমার জন্য সংকলন করেন নি নবাগত হওয়ার কারণে আমি কেন মন্তব্য করতে পারছি না।
হিস্টস্ট্যাম্প

8

আপনি সি ++ 11 সময় শ্রেণি ব্যবহার করতে পারেন:

    #include <iostream>
    #include <iomanip>
    using namespace std;

    int main() {

       time_t now = chrono::system_clock::to_time_t(chrono::system_clock::now());
       cout << put_time(localtime(&now), "%F %T") <<  endl;
      return 0;
     }

আউট পুট:

2017-08-25 12:30:08

6

সর্বদা __TIMESTAMP__প্রিপ্রেসেসর ম্যাক্রো থাকে।

#include <iostream>

using namespace std

void printBuildDateTime () {
    cout << __TIMESTAMP__ << endl;
}

int main() {
    printBuildDateTime();
}

উদাহরণ: সান এপ্রিল 13 11:28:08 2014


26
এটি টাইমস্ট্যাম্প হিসাবে কাজ করবে না কারণ বর্তমান সময়ের চেয়ে ফাইলটি তৈরি হওয়ার সময় সময় দেবে।
ফেব্রুয়ারি

3
এ দিকে ফিরে তাকানোর পরে, আমি কেন জানি না যে আমি কেন সি ++ প্রশ্নের উত্তর দিতে সজ্জিত বলে মনে করি
জেমস রবার্ট অ্যালবার্ট

1
__TIMESTAMP__একটি প্রিপ্রসেসর ম্যাক্রো যা বর্তমান সময়ের (সংকলন সময়ে) Ddd মিমি তারিখ hh :: মিমি :: এসএস ইয়াই রূপে প্রসারিত হয়। __TIMESTAMP__ম্যাক্রো বিশেষ মুহূর্ত একটি বাইনারি নির্মিত হয়েছিল সম্পর্কে তথ্য প্রদান করতে ব্যবহার করা যাবে। রেফারেন্স
রেফারেন্স

4

আপনি সরাসরি ব্যবহার করতে পারেন ctime():

#include <stdio.h>
#include <time.h>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  printf ( "Current local time and date: %s", ctime (&rawtime) );

  return 0;
} 

4
ভিএস ২০১২-এ আমি #define _CRT_SECURE_NO_DEPRECATEপ্রোগ্রাম
সংকলনগুলি

4

আমি আমার প্রয়োগের জন্য এই লিঙ্কটি বেশ কার্যকর পেয়েছি: সি ++ তারিখ এবং সময়

একটি পরিষ্কার "YYYYMMDD এইচএইচএমএমএসএস" আউটপুট ফর্ম্যাটটি পেতে, আমি আমার প্রয়োগে কোডটি এখানে ব্যবহার করি। পরম ইন ইউটিসি এবং স্থানীয় সময়ের মধ্যে স্যুইচ করার জন্য। আপনার প্রয়োজন অনুসারে আপনি আমার কোডটি সহজেই সংশোধন করতে পারেন।

#include <iostream>
#include <ctime>

using namespace std;

/**
 * This function gets the current date time
 * @param useLocalTime true if want to use local time, default to false (UTC)
 * @return current datetime in the format of "YYYYMMDD HHMMSS"
 */

string getCurrentDateTime(bool useLocalTime) {
    stringstream currentDateTime;
    // current date/time based on current system
    time_t ttNow = time(0);
    tm * ptmNow;

    if (useLocalTime)
        ptmNow = localtime(&ttNow);
    else
        ptmNow = gmtime(&ttNow);

    currentDateTime << 1900 + ptmNow->tm_year;

    //month
    if (ptmNow->tm_mon < 9)
        //Fill in the leading 0 if less than 10
        currentDateTime << "0" << 1 + ptmNow->tm_mon;
    else
        currentDateTime << (1 + ptmNow->tm_mon);

    //day
    if (ptmNow->tm_mday < 10)
        currentDateTime << "0" << ptmNow->tm_mday << " ";
    else
        currentDateTime <<  ptmNow->tm_mday << " ";

    //hour
    if (ptmNow->tm_hour < 10)
        currentDateTime << "0" << ptmNow->tm_hour;
    else
        currentDateTime << ptmNow->tm_hour;

    //min
    if (ptmNow->tm_min < 10)
        currentDateTime << "0" << ptmNow->tm_min;
    else
        currentDateTime << ptmNow->tm_min;

    //sec
    if (ptmNow->tm_sec < 10)
        currentDateTime << "0" << ptmNow->tm_sec;
    else
        currentDateTime << ptmNow->tm_sec;


    return currentDateTime.str();
}

আউটপুট (ইউটিসি, ইএসটি):

20161123 000454
20161122 190454

আপনি জিজ্ঞাসা করলেন কেন ptmNow->tm_day < 9এবং না <10?
এসটিএফ

আমি আমাদের ডিজাইনের সাথে মেলে তুলতে স্থানটি পূরণ করতে 9 দিনের চেয়ে কম 0 এক্স (যেমন 1 -> 01, 9 -> 09) 9 দিনের চেয়ে কম দিন চাই (এক্স এক্স বলুন) want দশম দিন স্ট্রিং এ 10 হতে পারে।
জো

সুতরাং আপনার এটি জিজ্ঞাসা করা দরকার <=9কারণ এটি আপনি 9. টি অন্তর্ভুক্ত করতে চান
STF

নোট আমি 1+কোড একটি আছে । দিন / মাস 0 থেকে শুরু হয়
জো

মাস 0 থেকে শুরু হয়, তবে দিন শুরু 1 এ!
এসটিএফ

3

এটি জি ++ এর সাথে কাজ করে আমি নিশ্চিত নই যে এটি আপনাকে সহায়তা করে কিনা। প্রোগ্রাম আউটপুট:

The current time is 11:43:41 am
The current date is 6-18-2015 June Wednesday 
Day of month is 17 and the Month of year is 6,
also the day of year is 167 & our Weekday is 3.
The current year is 2015.

কোড:

#include <ctime>
#include <iostream>
#include <string>
#include <stdio.h>
#include <time.h>

using namespace std;

const std::string currentTime() {
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%H:%M:%S %P", &tstruct);
return buf;
}

const std::string currentDate() {
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%B %A ", &tstruct);
return buf;
}

int main() {
    cout << "\033[2J\033[1;1H"; 
std:cout << "The current time is " << currentTime() << std::endl;
    time_t t = time(0);   // get time now
    struct tm * now = localtime( & t );
    cout << "The current date is " << now->tm_mon + 1 << '-' 
         << (now->tm_mday  + 1) << '-'
         <<  (now->tm_year + 1900) 
         << " " << currentDate() << endl; 

 cout << "Day of month is " << (now->tm_mday) 
      << " and the Month of year is " << (now->tm_mon)+1 << "," << endl;
    cout << "also the day of year is " << (now->tm_yday) 
         << " & our Weekday is " << (now->tm_wday) << "." << endl;
    cout << "The current year is " << (now->tm_year)+1900 << "." 
         << endl;
 return 0;  
}

এটি একটি ভাল উদাহরণ, তবে লাইন 'স্ট্রফটাইম (বুফ, সাইজফ (বুফ), "% এইচ:% এম:% এস% পি", & টিস্ট্রাক্ট);' অবশ্যই% P কে% পি তে রূপান্তরিত করা উচিত (সর্বশেষতমটি আদর্শ, উচ্চতর ক্ষেত্রে একের এমএসভিসি 2015-তে একটি দাবি উত্থাপন করে)।
ফার্নান্দো গঞ্জালেজ সানচেজ

3

এটি আমার জন্য লিনাক্স (আরএইচইএল) এবং উইন্ডোজ (x64) তে জি ++ এবং ওপেনএমপি লক্ষ্য করে সংকলিত হয়েছে:

#include <ctime>
#include <iostream>
#include <string>
#include <locale>

////////////////////////////////////////////////////////////////////////////////
//
//  Reports a time-stamped update to the console; format is:
//       Name: Update: Year-Month-Day_of_Month Hour:Minute:Second
//
////////////////////////////////////////////////////////////////////////////////
//
//  [string] strName  :  name of the update object
//  [string] strUpdate:  update descripton
//          
////////////////////////////////////////////////////////////////////////////////

void ReportTimeStamp(string strName, string strUpdate)
{
    try
    {
        #ifdef _WIN64
            //  Current time
            const time_t tStart = time(0);
            //  Current time structure
            struct tm tmStart;

            localtime_s(&tmStart, &tStart);

            //  Report
            cout << strName << ": " << strUpdate << ": " << (1900 + tmStart.tm_year) << "-" << tmStart.tm_mon << "-" << tmStart.tm_mday << " " << tmStart.tm_hour << ":" << tmStart.tm_min << ":" << tmStart.tm_sec << "\n\n";
        #else
            //  Current time
            const time_t tStart = time(0);
            //  Current time structure
            struct tm* tmStart;

            tmStart = localtime(&tStart);

            //  Report
            cout << strName << ": " << strUpdate << ": " << (1900 + tmStart->tm_year) << "-" << tmStart->tm_mon << "-" << tmStart->tm_mday << " " << tmStart->tm_hour << ":" << tmStart->tm_min << ":" << tmStart->tm_sec << "\n\n";
        #endif

    }
    catch (exception ex)
    {
        cout << "ERROR [ReportTimeStamp] Exception Code:  " << ex.what() << "\n";
    }

    return;
}

3

আপনি নিম্নলিখিত ব্যবহার করতে পারেন কোড পেতে বর্তমান ব্যবস্থার তারিখ এবং সময় মধ্যে সি ++ :

    #include <iostream>
    #include <time.h> //It may be #include <ctime> or any other header file depending upon
                     // compiler or IDE you're using 
    using namespace std;

    int main() {
       // current date/time based on current system
       time_t now = time(0);

       // convert now to string form
       string dt = ctime(&now);

       cout << "The local date and time is: " << dt << endl;
    return 0;
    }

দ্রষ্টব্য: পরিদর্শন এই আরও তথ্যের জন্য সাইট।


2

Ffead-CPP এটি বিভিন্ন কাজের জন্য একাধিক ইউটিলিটি শ্রেণীর প্রদান করে, এক ধরনের ক্লাস হয় তারিখ বর্গ যা সঠিক তারিখ অপারেশন থেকে তারিখ গাণিতিক বৈশিষ্ট্যগুলি অনেক প্রদান করে, সেখানে একটি আছে টাইমার সময়জ্ঞান অপারেশন জন্য প্রদান করা বর্গ। আপনি একই চেহারা করতে পারেন।


2

http://www.cplusplus.com/reference/ctime/strftime/

এই অন্তর্নির্মিত বিকল্পগুলির একটি যুক্তিসঙ্গত সেট প্রস্তাব বলে মনে হচ্ছে।


1
নিশ্চিত: time_t rawTime; time(&rawTime); struct tm *timeInfo; char buf[80]; timeInfo = localtime(&rawTime); strftime(buf, 80, "%T", timeInfo); এই নির্দিষ্টটি কেবল এইচএইচ: এমএম: এসএস রাখে। আমার প্রথম পোস্ট তাই আমি কোড ফর্ম্যাট সঠিক কিভাবে পেতে নিশ্চিত নই। এর জন্যে দুঃখিত.
bduhbya

1

স্থানীয় সময়_স () সংস্করণ:

#include <stdio.h>
#include <time.h>

int main ()
{
  time_t current_time;
  struct tm  local_time;

  time ( &current_time );
  localtime_s(&local_time, &current_time);

  int Year   = local_time.tm_year + 1900;
  int Month  = local_time.tm_mon + 1;
  int Day    = local_time.tm_mday;

  int Hour   = local_time.tm_hour;
  int Min    = local_time.tm_min;
  int Sec    = local_time.tm_sec;

  return 0;
} 

0
#include <Windows.h>

void main()
{
     //Following is a structure to store date / time

SYSTEMTIME SystemTime, LocalTime;

    //To get the local time

int loctime = GetLocalTime(&LocalTime);

    //To get the system time

int systime = GetSystemTime(&SystemTime)

}

5
প্রশ্ন ক্রস প্ল্যাটফর্মের জন্য জিজ্ঞাসা করে। উইন্ডোজ এইচটি উইন্ডোজ-নির্দিষ্ট, এবং void mainএমনকি সি / সি ++ মানের নয়।
16:54

0

আপনি ব্যবহার করতে পারেন boost:

#include <boost/date_time/gregorian/gregorian.hpp>
#include <iostream>
using namespace boost::gregorian;

int main()
{
    date d = day_clock::universal_day();
    std::cout << d.day() << " " << d.month() << " " << d.year();
}

0
#include <iostream>
#include <chrono>
#include <string>
#pragma warning(disable: 4996)
// Ver: C++ 17 
// IDE: Visual Studio
int main() {
    using namespace std; 
    using namespace chrono;
    time_point tp = system_clock::now();
    time_t tt = system_clock::to_time_t(tp);
    cout << "Current time: " << ctime(&tt) << endl;
    return 0;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.