---
name: "ftime"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/ftime/3"
---

# ftime(3)

return date and time

## NAME

ftime - return date and time

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <sys/timeb.h>
```

**\[\[deprecated\]\] int ftime(struct timeb \****tp***);**

## DESCRIPTION

**NOTE**: This function is no longer provided by the GNU C library. Use [**clock\_gettime**(2)](/clock_gettime/2.md) instead.

This function returns the current time as seconds and milliseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC). The time is returned in *tp*, which is declared as follows:

```
struct timeb {
    time_t         time;
    unsigned short millitm;
    short          timezone;
    short          dstflag;
};
```

Here *time* is the number of seconds since the Epoch, and *millitm* is the number of milliseconds since *time* seconds since the Epoch. The *timezone* field is the local timezone measured in minutes of time west of Greenwich (with a negative value indicating minutes east of Greenwich). The *dstflag* field is a flag that, if nonzero, indicates that Daylight Saving time applies locally during the appropriate part of the year.

POSIX.1-2001 says that the contents of the *timezone* and *dstflag* fields are unspecified; avoid relying on them.

## RETURN VALUE

This function always returns 0. (POSIX.1-2001 specifies, and some systems document, a -1 error return.)

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **ftime**() | Thread safety | MT-Safe |

## STANDARDS

None.

## HISTORY

4\.2BSD. Marked as LEGACY in POSIX.1-2001; removed in POSIX.1-2008. Removed in glibc 2.33.

This function is obsolete. Don't use it. If the time in seconds suffices, [**time**(2)](/time/2.md) can be used; [**gettimeofday**(2)](/gettimeofday/2.md) gives microseconds; [**clock\_gettime**(2)](/clock_gettime/2.md) gives nanoseconds but is not as widely available.

## BUGS

Early glibc2 is buggy and returns 0 in the *millitm* field; glibc 2.1.1 is correct again.

## SEE ALSO

[**gettimeofday**(2)](/gettimeofday/2.md), [**time**(2)](/time/2.md)
