الانتقال إلى المحتوى الرئيسي

تحويل سلسلة إلى تاريخ ووقت باستخدام لغة ج: دليل مفصل

يعد تحويل سلسلة إلى كائن تاريخ ووقت مهمة شائعة عند العمل مع البيانات ، خاصة عند معالجة البيانات المؤقتة. توفر لغة البرمجة ج مجموعة من الوظائف والأساليب لأداء هذه العملية.

واحدة من الوظائف الأكثر استخداما لتحويل سلسلة إلى التاريخ والوقت هي وظيفة ستربتيمي من الوقت.مكتبة ح. تتيح لك هذه الوظيفة تحديد تنسيق السلسلة التي يتم فيها تعيين الوقت وتحويله إلى كائن التاريخ والوقت المناسب.

يتم تحديد تنسيق السلسلة باستخدام أحرف خاصة ، والتي تمثل علامات للعناصر المؤقتة مثل السنة والشهر واليوم وما إلى ذلك. على سبيل المثال ، يشير رمز ٪ص إلى السنة بتنسيق سنة ، ويشير ٪ م إلى الشهر بتنسيق مم ، وهكذا. يمكن العثور على وصف تفصيلي لجميع رموز التنسيق في وثائق لغة سي.

Пример использования функции strptime:

time_t t = mktime(&tm);

  1. printf("Преобразованная дата и время: %s", asctime(&tm));
  2. return 0;
  3. }
  4. В данном примере строка «2022-01-01 12:00:00» преобразуется в объект типа datetime. ثم يتم استخدام وظيفة مكتيمي لتحويل بنية تم إلى كائن تايم تي ، والذي يمثل عدد الثواني منذ بداية العصر. بعد ذلك ، يتم استخدام وظيفة أسكتيمي لتحويل الوقت إلى سلسلة وعرض النتيجة على الشاشة.
  5. نظرة عامة على تحويل سلسلة إلى تاريخ ووقت باستخدام لغة سي
  6. طرق تحويل سلسلة إلى تاريخ ووقت
  7. أمثلة الاستخدام

المشاكل المحتملة وطرق حلها

لتلخيص

سؤال وجواب

  1. كيف يمكنني تحويل سلسلة بتنسيق" د.م. ي " إلى نوع بيانات التاريخ والوقت في ج?
  2. أحصل على خطأ عند تحويل سلسلة إلى نوع بيانات التاريخ والوقت في ج, ماذا علي أن أفعل?

  3. هل هناك طرق بديلة لتحويل سلسلة إلى نوع بيانات التاريخ والوقت في ج?
  4. ما هو تنسيق السلسلة المطلوب للتحويل إلى نوع بيانات التاريخ والوقت في ج?

  5. هل من الممكن تحويل سلسلة مع الوقت إلى نوع البيانات التاريخ والوقت في ج?
  6. نظرة عامة على تحويل سلسلة إلى تاريخ ووقت باستخدام لغة سي

  7. في لغة البرمجة ج ، هناك عدة طرق لتحويل سلسلة إلى كائن التاريخ والوقت. يمكن أن يكون هذا مفيدا عند العمل مع التواريخ والأوقات ، وكذلك عند قراءة البيانات من الملفات أو إدخال المستخدم.
  8. فيما يلي بعض الطرق الشائعة لتحويل سلسلة إلى تاريخ ووقت في ج:

وظائف ستربتيمي() و سترفتيمي() :

تسمح لك هذه الوظائف بتحويل السلاسل إلى تنسيق التاريخ والوقت المحدد ، والعكس صحيح. يمكن أن تكون مفيدة عند العمل مع التواريخ بتنسيقات مختلفة. تقبل الدالة ستربتيمي () سلسلة وتنسيق ، وإرجاع كائن التاريخ والوقت. تقوم وظيفة سترفتيمي () بإجراء التحويل العكسي عن طريق أخذ كائن داتيتيم وإرجاع سلسلة بالتنسيق المحدد.

وظيفة سكانف():

تسمح لك وظيفة سسكانوف () بقراءة البيانات من سلسلة باستخدام إدخال منسق. يمكن استخدامه لتحويل سلسلة التاريخ والوقت إلى كائن التاريخ والوقت. تقوم الدالة بإرجاع عدد العناصر التي تمت قراءتها بنجاح من السلسلة.

1. وظيفة

ستربتيمي

وظيفة 

ستربتيمي

في

الوقت.مكتبة ح

позволяет преобразовать строку в объект

struct tm

, который содержит информацию о дате и времени. Затем можно использовать другие функции для работы с датой и временем.

Пример:

#include

#include

int main() {

const char* str = "2022-01-01 12:34:56";

struct tm tm;

strptime(str, "%Y-%m-%d %H:%M:%S", &tm);

time_t t = mktime(&tm);

printf("День: %d

", tm.tm_mday);

printf("Месяц: %d

", tm.tm_mon + 1);

printf("Год: %d

", tm.tm_year + 1900);

برينتف ("دقيقة: ٪ د

بعض تطبيقات لغة سي ، مثل

غليبك

، قم بتوسيع وظائف المكتبة القياسية عن طريق إضافة وظيفة 

ستربتيمي

، الذي يحول السلسلة مباشرة إلى

كائن هيكل تم

، دون الحاجة إلى الاتصال

وظيفة مكتيمي

.

مثال:

#define _XOPEN_SOURCE

#include

#include

int main() {

const char* str = "2022-01-01 12:34:56";

struct tm tm;

strptime(str, "%Y-%m-%d %H:%M:%S", &tm);

printf("День: %d

", tm.tm_mday);

printf("Месяц: %d

", tm.tm_mon + 1);

printf("Год: %d

", tm.tm_year + 1900);

printf("Минута: %d

3. Библиотека

strptime

 в 

Microsoft Visual C++

В Microsoft Visual C++ можно использовать функцию

strptime

из библиотеки

msvcrt.dll

. Однако, этот метод требует дополнительных настроек.

Пример:

#define _CRT_SECURE_NO_WARNINGS

#include

#include

typedef void (__cdecl *ms_strptime_fn)(const char*, const char*, struct tm*);

int main() {

const char* str = "2022-01-01 12:34:56";

struct tm tm;

HMODULE hModule = LoadLibraryA("msvcrt.dll");

ms_strptime_fn ms_strptime = (ms_strptime_fn)GetProcAddress(hModule, "_strptime");

ms_strptime(str, "%Y-%m-%d %H:%M:%S", &tm);

printf("День: %d

", tm.tm_mday);

printf("Месяц: %d

", tm.tm_mon + 1);

printf("Год: %d

", tm.السنة + 1900);

برينتف ("ساعة: ٪ د

"،تم_ساعة);

برينتف ("دقيقة: ٪ د

العودة 0;

  1. Пример 3:

هيكل تم تم;

  1. ميمسيت (&تم ، 0 ، سيزوف (هيكل تم));

  2. ستربتيمي (التاريخ ، "٪ ص - ٪ م - ٪ د ٪ ح: ٪ م: ٪ س " ،و تم);

  3. تايم تي تي = مكتايم(&تم);

هيكل تم * ريسولت_تم = لوكالتيمي(&تي);

برينتف ("Дата: ٪ 04 د - ٪ 02 د - ٪ 02 د

", نتيجة_تم - > تم_عام + 1900, نتيجة_تم - >تم_مون_1, نتيجة_تم - > تم_مداي);

برينتف ("الوقت: ٪ 02د: ٪ 02د: ٪ 02د

"، النتيجة - > تم-ساعة ، النتيجة->تم-مين ، النتيجة - >تم-سيك);

العودة 0;