타임스탬프 자료
프로그래밍 언어 타임스탬프 비교
프로그래밍 언어 타임스탬프 비교
널리 사용되는 프로그래밍 언어의 타임스탬프 작업에 대한 빠른 참조입니다.
현재 타임스탬프
| 언어 | 초 | 밀리초 | 마이크로초 |
|---|---|---|---|
| 자바스크립트 | Math.floor(Date.now() / 1000) | Date.now() | performance.now() |
| 파이썬 | int(time.time()) | int(time.time() * 1000) | time.time_ns() // 1000 |
| 자바 | System.currentTimeMillis() / 1000 | System.currentTimeMillis() | Instant.now().getEpochSecond() |
| 가기 | time.Now().Unix() | time.Now().UnixMilli() | time.Now().UnixMicro() |
| PHP | 시간() | 마이크로타임(true) * 1000 | 마이크로타임(true) * 1000000 |
| 루비 | Time.now.to_i | Time.now.to_f * 1000 | Time.now.to_r |
| C# | DateTimeOffset.UtcNow.ToUnixTimeSeconds() | DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() | - |
| 스위프트 | Date().timeIntervalSince1970 | Int(Date().timeIntervalSince1970 * 1000) | - |
날짜까지의 타임스탬프
| 언어 | 코드 |
|---|---|
| 자바스크립트 | 새 날짜(타임스탬프 * 1000) |
| 파이썬 | datetime.fromtimestamp(timestamp) |
| 자바 | Instant.ofEpochSecond(타임스탬프) |
| 가기 | time.Unix(타임스탬프, 0) |
| PHP | date('연월일 H:i:s', $timestamp) |
| 루비 | Time.at(타임스탬프) |
| C# | DateTimeOffset.FromUnixTimeSeconds(타임스탬프) |
| 스위프트 | Date(timeIntervalSince1970: TimeInterval(timestamp)) |
날짜-타임스탬프
| 언어 | 코드 |
|---|---|
| 자바스크립트 | Math.floor(date.getTime() / 1000) |
| 파이썬 | int(date.timestamp()) |
| 자바 | date.toEpochSecond(ZoneOffset.UTC) |
| 가기 | date.Unix() |
| PHP | strtotime('2024-01-01') |
| 루비 | date.to_i |
| C# | ((DateTimeOffset)date).ToUnixTimeSeconds() |
| 스위프트 | Int(date.timeIntervalSince1970) |
서식 지정
| 언어 | 코드 |
|---|---|
| 자바스크립트 | date.toISOString() 또는 date.toLocaleString() |
| 파이썬 | date.strftime('%Y-%m-%d %H:%M:%S') |
| 자바 | DateTimeFormatter.ISO_DATE_TIME.format(날짜) |
| 가기 | date.Format(time.RFC3339) |
| PHP | date('연월일 H:i:s', $timestamp) |
| 루비 | date.strftime('%Y-%m-%d %H:%M:%S') |
| C# | date.ToString("yyyy-MM-dd HH:mm:ss") |
| 스위프트 | dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" |
시간대 처리
| 언어 | UTC | 지역 | 변환 |
|---|---|---|---|
| 자바스크립트 | new Date().toISOString() | new Date().toLocaleString() | date.toLocaleString('en-US', {timeZone: 'UTC'}) |
| 파이썬 | datetime.utcnow() | datetime.now() | date.astimezone(timezone('UTC')) |
| 자바 | Instant.now() | LocalDateTime.now() | date.atZone(ZoneId.of("UTC")) |
| 가기 | time.Now().UTC() | time.Now() | date.In(time.UTC) |
| PHP | gmdate() | 날짜() | date_default_timezone_set('UTC') |
| 루비 | Time.now.utc | 'Time.now' | Time.now.getutc` |
| C# | DateTime.UtcNow | DateTime.Now | TimeZoneInfo.ConvertTimeToUtc(날짜) |
| 스위프트 | Date()(내부적으로 항상 UTC) | 날짜() | Calendar.current.dateComponents |
에포크 시작
- 모든 언어는 Unix epoch를 사용합니다: 1970년 1월 1일 00:00:00 UTC
- 예외: GPS 시간은 1980년 1월 6일을 사용합니다.
- TAI는 1958년 1월 1일을 사용합니다.
정밀도
- 초: 가장 일반적이며 10자리(2286까지)
- 밀리초: 13자리, JavaScript 기본값
- 마이크로초: 16자리
- 나노초: 19자리, 일부 시스템
시간대 저장
- JavaScript: Date 객체에 시간대가 없으며 브라우저 시간대를 사용합니다.
- Python: Naive 대 Aware 날짜/시간 객체
- Java: Instant(UTC) 및 ZonedDateTime(영역 포함)
- 이동: Time 객체에 위치가 첨부됨
- Ruby: 시간 개체에는 시간대 오프셋이 포함됩니다.
- C#: DateTimeKind(지정되지 않음, Utc, 로컬)
- Swift: 날짜는 항상 UTC이고 달력은 영역을 처리합니다.
모범 사례
- 항상 UTC를 데이터베이스에 저장
- **표시용으로만 현지 시간으로 변환
- API 직렬화에 ISO 8601 사용
- 윤초 처리를 신중하게 수행하세요(GPS/TAI 대 UTC).
- 사용 사례에 필요한 정밀도 고려