Что такое код asctime

Что такое код asctime

Feature Test Macro Requirements for glibc (see feature_test_macros (7)):

asctime_r (), ctime_r (), gmtime_r (), localtime_r ():
_POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE || _POSIX_SOURCE

DESCRIPTION

The asctime () and mktime () functions both take an argument representing broken-down time which is a representation separated into year, month, day, etc.

Broken-down time is stored in the structure tm which is defined in as follows:

The members of the tm structure are: tm_sec The number of seconds after the minute, normally in the range 0 to 59, but can be up to 60 to allow for leap seconds. tm_min The number of minutes after the hour, in the range 0 to 59. tm_hour The number of hours past midnight, in the range 0 to 23. tm_mday The day of the month, in the range 1 to 31. tm_mon The number of months since January, in the range 0 to 11. tm_year The number of years since 1900. tm_wday The number of days since Sunday, in the range 0 to 6. tm_yday The number of days since January 1, in the range 0 to 365. tm_isdst A flag that indicates whether daylight saving time is in effect at the time described. The value is positive if daylight saving time is in effect, zero if it is not, and negative if the information is not available.

The call ctime( t ) is equivalent to asctime(localtime( t )) . It converts the calendar time t into a null-terminated string of the form

«Wed Jun 30 21:49:08 1993\n»

The abbreviations for the days of the week are «Sun», «Mon», «Tue», «Wed», «Thu», «Fri», and «Sat». The abbreviations for the months are «Jan», «Feb», «Mar», «Apr», «May», «Jun», «Jul», «Aug», «Sep», «Oct», «Nov», and «Dec». The return value points to a statically allocated string which might be overwritten by subsequent calls to any of the date and time functions. The function also sets the external variables tzname , timezone , and daylight (see tzset (3)) with information about the current timezone. The reentrant version ctime_r () does the same, but stores the string in a user-supplied buffer which should have room for at least 26 bytes. It need not set tzname , timezone , and daylight .

The gmtime () function converts the calendar time timep to broken-down time representation, expressed in Coordinated Universal Time (UTC). It may return NULL when the year does not fit into an integer. The return value points to a statically allocated struct which might be overwritten by subsequent calls to any of the date and time functions. The gmtime_r () function does the same, but stores the data in a user-supplied struct.

The localtime () function converts the calendar time timep to broken-time representation, expressed relative to the user’s specified timezone. The function acts as if it called tzset (3) and sets the external variables tzname with information about the current timezone, timezone with the difference between Coordinated Universal Time (UTC) and local standard time in seconds, and daylight to a non-zero value if daylight savings time rules apply during some part of the year. The return value points to a statically allocated struct which might be overwritten by subsequent calls to any of the date and time functions. The localtime_r () function does the same, but stores the data in a user-supplied struct. It need not set tzname , timezone , and daylight .

Илон Маск рекомендует:  Атрибуты обработки событий

The asctime () function converts the broken-down time value tm into a null-terminated string with the same format as ctime (). The return value points to a statically allocated string which might be overwritten by subsequent calls to any of the date and time functions. The asctime_r () function does the same, but stores the string in a user-supplied buffer which should have room for at least 26 bytes.

The mktime () function converts a broken-down time structure, expressed as local time, to calendar time representation. The function ignores the values supplied by the caller in the tm_wday and tm_yday fields. The value specified in the tm_isdst field informs mktime () whether or not daylight saving time (DST) is in effect for the time supplied in the tm structure: a positive value means DST is in effect; zero means that DST is not in effect; and a negative value means that mktime () should (use timezone information and system databases to) attempt to determine whether DST is in effect at the specified time.

The mktime () function modifies the fields of the tm structure as follows: tm_wday and tm_yday are set to values determined from the contents of the other fields; if structure members are outside their valid interval, they will be normalized (so that, for example, 40 October is changed into 9 November); tm_isdst is set (regardless of its initial value) to a positive value or to 0, respectively, to indicate whether DST is or is not in effect at the specified time. Calling mktime () also sets the external variable tzname with information about the current timezone.

If the specified broken-down time cannot be represented as calendar time (seconds since the Epoch), mktime () returns a value of (time_t) -1 and does not alter the members of the broken-down time structure.

RETURN VALUE


CONFORMING TO


NOTES

POSIX.1-2001 says: «The asctime (), ctime (), gmtime (), and localtime () functions shall return values in one of two static objects: a broken-down time structure and an array of type char . Execution of any of the functions may overwrite the information returned in either of these objects by any of the other functions.» This can occur in the glibc implementation.

In many implementations, including glibc, a 0 in tm_mday is interpreted as meaning the last day of the preceding month.

The glibc version of struct tm has additional fields

defined when _BSD_SOURCE was set before including . This is a BSD extension, present in 4.3BSD-Reno.

According to POSIX.1-2004, localtime () is required to behave as though tzset () was called, while localtime_r () does not have this requirement. For portable code tzset () should be called before localtime_r ().

Функция asctime

Функция asctime возвращает указатель на строку, которая содержит информацию, сохраняемую в адресуемой параметром ptr структуре и имеющую следующую форму:

День_недели месяц дата часы:минуты:секунды год\n\0

Ptr указывает на структуру, заполняемую функциями localtime() или gmtime() .

Буфер, используемый функцией asctime() для хранения форматированной строки вывода, является статически распределенным массивом символов. Он перезаписывается при каждом вызове функции. Чтобы сохранить содержание строки, скопируйте ее в какую-нибудь другую область памяти.

Пример

Эта программа отображает местное время, определяемое системой:

asctime

Функция asctime() возвращает указатель на строку, представляющую информацию, хранящую­ся в структуре (на которую указывает ptr), преобразованную к следующей форме:

день месяц дата часы: минуты: секунды год

Например: Wed Jun 19 12:05:34 1999

Передаваемый функции asctime() указатель на структуру в общем случае получается в результа­те вызова localtime() или gmtime().

Илон Маск рекомендует:  Dos fn 5bh создать новый файл

Используемый функцией asctime() буфер, в котором хранится форматированная строка вы­ходных данных, представляет собой статически выделенный массив символов. Данные в нем пере­записываются всякий раз при вызове функции. Если необходимо сохранить содержимое этой строки, то необходимо скопировать ее куда-нибудь.

asctime() добавляет \n

19.08.2011, 11:56

Как получить правильное местное время, используя функцию asctime и localtime?
Друзья! Хочу видеть первое января 1970 года, одни ноли. Вместо этого упорно показывает 05:00:00.

Push_back() не добавляет элемент
Помогите, нужно побыстрее сделать, а голова не варит. Где ошибка? Спасибо StorageComponent.

почему не добавляет элемент?
insert() должен добавить один элемент,но он неправильно работает,где ошибка? #include «stdafx.h».

Строки (добавляет какие-то непонятные символы)
Есть функция, которая возвращает строку. char *create_string(int Q1, int Q2, int Q3, int S1, int.

Функция asctime

Функция asctime возвращает указатель на строку, которая содержит информацию, сохраняемую в адресуемой параметром ptr структуре и имеющую следующую форму:

День_недели месяц дата часы:минуты:секунды год\n\0

Ptr указывает на структуру, заполняемую функциями localtime() или gmtime() .

Буфер, используемый функцией asctime() для хранения форматированной строки вывода, является статически распределенным массивом символов. Он перезаписывается при каждом вызове функции. Чтобы сохранить содержание строки, скопируйте ее в какую-нибудь другую область памяти.

Пример

Эта программа отображает местное время, определяемое системой:

c — asctime() странное поведение

У меня есть следующий код.

В принципе, я хочу получить текущее время на t1, а затем (после задержки, вызванной ожиданием я для чтения) текущее время на t2. t1 и t2 различны, а также T1.tm_sec и T2.tm_sec, но printf отображает ту же дату (соответствующую T1). Я знаю, что внутри, asctime (http://www.cplusplus.com/reference/ctime/asctime/?kw=asctime) использует статический указатель, но я попробовал меньшую программу-образец с функцией, возвращающей статический указатель char, и они работал.

и я использую его так

и он работает (строка напечатана отличается).

Так что, я думаю, это не может быть оттуда. Я также скопировал код asctime (из cplusplus) и поместил некоторые функции printfs внутри этой функции, и я заметил, что переменная result получает правильное обновление после оператора sprintf.

Итак, что происходит, когда printf отображает ту же дату?

Код asctime от cplusplus.com

    2 2
  • 11 июл 2020 2020-07-11 13:47:05
  • Andrew

2 ответа

Проблема в том, что ваш тест с test функцией проверял другой сценарий, чем тот, у которого есть asctime . С test :

у вас есть два отдельных вызова функции, в то время как с asctime у вас есть

два вызова в качестве аргументов в одной функции. Аргументы вычисляются перед вызовом printf , поэтому видимое поведение asctime видимо — один из вызовов asctime перезаписывает результат другого. Скопируйте результат asctime где-нибудь, прежде чем вызывать его снова, asctime_r лучшего использования asctime_r .

  • 11 июл 2020 2020-07-11 13:47:06
  • Wojtek Surowka

Существует разница в:

Первый (который также вызывает то, что вы определяете как «странное» поведение) использует статическую ячейку памяти для хранения строки. Второй вызов перезаписывает результат первого вызова.

Во втором примере вы фактически используете результат первого вызова, а затем вызываете функцию второй раз. Чтобы сохранить оба результата, вы можете сделать следующее:

Который выделил бы копию и сохранил бы результат. Еще лучше что-то вроде этого:

6.1.3.1. Простое форматирование времени: asctime() и ctime()

Похожие главы из других книг

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени «В ранние мини-компьютерные времена Unix» вынесенная в заголовок идея была довольно радикальной (машины тогда работали

Класс CTime – дата и время

Класс CTime – дата и время Для работы с календарными датами и временем в состав библиотеки классов MFC включен класс CTime. Класс основан на элементе типа time_t, в котором будет храниться дата и время. Элемент типа time_t объявлен как private, поэтому вы не можете обращаться

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени «В ранние мини-компьютерные времена Unix» вынесенная в заголовок идея была довольно радикальной (машины тогда работали

Илон Маск рекомендует:  Difftime определить отрезок времени

Пример: простое управление задачами

Пример: простое управление задачами Оболочки UNIX предоставляют команды, позволяющие выполнять процессы в фоновом режиме и получать их текущее состояние. В этом разделе разрабатывается простой «процессор задач» («job shell») с аналогичным набором команд, перечень которых

7.21. Форматирование и печать даты и времени

7.21. Форматирование и печать даты и времени Для получения канонического представления даты и времени служит метод asctime; У него есть синоним ctime.Аналогичный результат дает метод to_s. Точно такая же строка будет напечатана, если просто передать объект, представляющий дату и

Python 3 – Время. Метод asctime()

Описание

Синтаксис

Ниже приводится синтаксис для метода asctime():

Параметры

t – это кортеж из 9 элементов или struct_time, представляющий время, возвращаемое функцией gmtime() или localtime().

Возвращаемое значение

Этот метод возвращает 24-символьную строку следующей формы: «Понедельник 30 июля 10:20:11 2020».

Пример

В следующем примере показано использование метода asctime().

Результат

Когда мы запускаем указанную выше программу, она выдает следующий результат:

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

C library function — asctime()

Description

The C library function char *asctime(const struct tm *timeptr) returns a pointer to a string which represents the day and time of the structure struct timeptr.

Declaration

Following is the declaration for asctime() function.

Parameters

The timeptr is a pointer to tm structure that contains a calendar time broken down into its components as shown below −

Return Value

This function returns a C string containing the date and time information in a human-readable format Www Mmm dd hh:mm:ss yyyy, where Www is the weekday, Mmm the month in letters, dd the day of the month, hh:mm:ss the time, and yyyy the year.

Example

The following example shows the usage of asctime() function.

Let us compile and run the above program that will produce the following result −

c — asctime() странное поведение

У меня есть следующий код.

В принципе, я хочу получить текущее время на t1, а затем (после задержки, вызванной ожиданием я для чтения) текущее время на t2. t1 и t2 различны, а также T1.tm_sec и T2.tm_sec, но printf отображает ту же дату (соответствующую T1). Я знаю, что внутри, asctime (http://www.cplusplus.com/reference/ctime/asctime/?kw=asctime) использует статический указатель, но я попробовал меньшую программу-образец с функцией, возвращающей статический указатель char, и они работал.

и я использую его так

и он работает (строка напечатана отличается).

Так что, я думаю, это не может быть оттуда. Я также скопировал код asctime (из cplusplus) и поместил некоторые функции printfs внутри этой функции, и я заметил, что переменная result получает правильное обновление после оператора sprintf.

Итак, что происходит, когда printf отображает ту же дату?

Код asctime от cplusplus.com

    3 2
  • 11 июл 2020 2020-07-11 13:47:05
  • Andrew

2 ответа

Проблема в том, что ваш тест с test функцией проверял другой сценарий, чем тот, у которого есть asctime . С test :

у вас есть два отдельных вызова функции, в то время как с asctime у вас есть

два вызова в качестве аргументов в одной функции. Аргументы вычисляются перед вызовом printf , поэтому видимое поведение asctime видимо — один из вызовов asctime перезаписывает результат другого. Скопируйте результат asctime где-нибудь, прежде чем вызывать его снова, asctime_r лучшего использования asctime_r .

  • 11 июл 2020 2020-07-11 13:47:06
  • Wojtek Surowka

Существует разница в:

Первый (который также вызывает то, что вы определяете как «странное» поведение) использует статическую ячейку памяти для хранения строки. Второй вызов перезаписывает результат первого вызова.

Во втором примере вы фактически используете результат первого вызова, а затем вызываете функцию второй раз. Чтобы сохранить оба результата, вы можете сделать следующее:

Который выделил бы копию и сохранил бы результат. Еще лучше что-то вроде этого:

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL