본문 바로가기
개발언어/C#.NET

C# Convert DateTime to UNIX timestamp or UNIX timestamp to DateTime

by 엔돌슨 2011. 12. 2.
반응형
C# Convert System.DateTime to UNIX timestamp or Make UNIX timestamp

mysql에 있는 unix timestamp을 생성하고 다시 DateTime으로 변경을 해야 했다. DataTime을 Unix TimeStamp로 변경 하기도 해야 했는 데 샘플을 만들어 보았다. 일단 C#에서 unix TimeStamp을 생성하는 데 힘들었다. 무엇이 틀렸는 지 날짜의 시간이 맞지 않아 고생했다.



/// <summary>
/// method for converting a System.DateTime value to a UNIX Timestamp
/// 지금 시간을 Unix timestamp로 변경하는 코드이다. 
/// </summary>
private void ConvertToTimestamp()
{
DateTime now = DateTime.Now;
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
textBox1.Text = Convert.ToString(Convert.ToInt64((now - epoch).TotalSeconds));
}

반대로 Unix Timestamp을 DataTime로 변경하는 소스이다.
// This is an example of a UNIX timestamp for the date/time 11-04-2005 09:25.
double timestamp = Convert.ToDouble(textBox1.Text);

// First make a System.DateTime equivalent to the UNIX Epoch.
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);

// Add the number of seconds in UNIX timestamp to be converted.
dateTime = dateTime.AddSeconds(timestamp);

// The dateTime now contains the right date/time so to format the string,
// use the standard formatting methods of the DateTime object.
string printDate = dateTime.ToShortDateString() + " " + dateTime.ToShortTimeString();

// Print the date and time
textBox1.Text = Convert.ToString(printDate);
 

Convert System.DateTime to UNIX timestamp  또는 Convert UNIX timestamp to System.DateTime  하는 샘플이다.



쿼리로 질의 할때는 Sqlite에서는 해당 년, 월일을 뽑아올 수 있다.
 select conversationID, fromJID, toJID, datetime(sentdate, 'unixepoch') as sentdate,  strftime('%Y년%m월', datetime(sentdate, 'unixepoch')) as year,  sentdate as sdate, strftime('%d(%w) %H:%M:%S', datetime(sentdate, 'unixepoch')) as day,  body, datetime(sentdate, 'unixepoch') as CDATETIME,  case when fromJID LIKE '000003000003@messenger.co.kr%' then toJID else fromJID end as allJID  from ofMessageArchive  
where  strftime('%Y-%m', datetime(sentdate, 'unixepoch'))  BETWEEN '2011-11' and '2011-12'  and (toJID LIKE '000003000003@messenger.co.kr%' or fromJID LIKE '000003000003@messenger.co.kr%')  and sentdate > '0'  group by conversationID order by sentDate


참고한 사이트

(웹사이트에서 현재 UNIX Timestamp을 보여주는 사이트)
http://www.epochconverter.com  

How do you convert epoch time in C#?
http://stackoverflow.com/questions/2883576/how-do-you-convert-epoch-time-in-c 

UNIX timestamp to System.DateTime
http://www.codeproject.com/KB/cs/timestamp.aspx

Convert System.DateTime to UNIX timestamp
http://www.dreamincode.net/code/snippet2094.htm