2012-09-05 37 views
6

Tôi đang cố gắng định dạng một dấu thời gian Unix 10 chữ số (hiện là một chuỗi) sử dụng ctime.Định dạng dấu thời gian Unix với ctime trong c

Tuy nhiên, ctime() dự kiến ​​tham số của loại time_t, không phải chuỗi.

Tôi phải làm gì trước khi có thể sử dụng ctime? Nói cách khác, tôi có thể dễ dàng chuyển đổi chuỗi thành một time_t không?

+0

Sử dụng 'strtoull' (kiểm tra tràn). –

+0

@ eq-: Thời gian là số lượng đã ký, không được ký. Thời gian tiêu cực là trước 1970-01-01 00: 00: 00Z (và có, để lại sự mơ hồ giữa các lỗi và một giây trước The Epoch). –

+0

@JonathanLeffler, tôi đã rất ý thức về điều đó. Tuy nhiên, nói về dấu thời gian "10 chữ số" (hoặc ít nhất có thể được diễn giải để làm) hạn chế phạm vi thành dấu thời gian không âm. –

Trả lời

9

Bạn đang nói rằng bạn có một cái gì đó như 1346426869 như một chuỗi và muốn nó là một time_t?

time_t raw_time = atoi("1346426869"); 
printf("current time is %s",ctime(&raw_time)); 

> current time is Fri Aug 31 11:27:49 2012 
Các vấn đề liên quan