Converting Excel date/time to Unix timestamp

Timestamp conversion are required when you import information generated by Windows based application to UNIX system. I faced a similar type of problem when I was trying to read data from a MS Excel file and storing it in MySQL database using a php code.

I was using Excel_reader class to read the Excel file. In that file there were two columns for 2 dates. While reading those column value I found they contain some numeric value. Those values are not same as unix timestamp value. As I was trying to store those values as timestamp I need to convert them into the timestamp.

After some searching and reading from internet I found that Windows and Unix system stores timestamp in different manner. Once this is clear to me I have converted them easily. So let us understand how these two system stores timestamp .

In Unix system timestamp is stored as integer in terms of seconds. If we consider the current timestamp value in Unix then it is basically the no. of seconds passed from 1 January 1970 00.00Hrs to till now. One important thing for Unix timestamp is that it is measured with reference to GMT time. That means there is no time-zone adjustment considered in case of Unix timestamp.

In case of Windows time it is stored as floating point/real number but in terms of days. For current timestamp, the no. days spent from 1 January 1900 stored in integer part and fraction of the day stored in the fractional part of the timestamp.

Now comes the conversion process. I made a simple conversion calculation as follows:

[code lang=”php-brief”]
$DayDifference = 25569; //Day difference between 1 January 1900 to 1 January 1970
$Day2Seconds = 86400; // no. of seconds in a day
$ExcelTime //integer value stored in the Excel column
$UnixTime = ($ExcelTime – $DayDifference)*$Day2Seconds;
[/code]

Now if you look at the calculation, you may find that the conversion is not absolutely accurate. This is because I haven’t consider the fractional part of the Excel time. The reason behind doing so is that all I need to do is to convert a date from Windows format to Unix format. So fraction part of windows time won’t affect a lot for my requirement. But if you use this calculation for converting a date-time from Windows format to Unix format then conversion of the fractional part should done.
If you like this small tips please let me know about it.

I got my new logo

For me its a celebration time! Wanna know why ?

Well I got my new logo for my website and company. At first take a look at it.

WCE Logo

Designed by my friend Nilkamal. Before he start working on it he asked me a simple question.

Do you dream about it?

I said yes. After 2 days this is the outcome. Simple but caries the senses. I like this guy, not because he is my friend but because of his artistic senses. I also love his professionalism. Together we had lot discussions related to art, culture, trends in visualization jobs and many more. Some day I will try to take his interview and then post it here.

** This is a long waiting post, as I was very busy with my jobs. Also I found some problem with my blog, which needed fresh installation. So I upgrade it with current version and make this post live.

QuickForm and Jscalendar

Most of us are familiar with calendars in web pages. Small calendar showing date and year are really good to see and useful too. While in case of forms we have seen calendars attached with date fields. In some of my earlier projects I have designed date fields using simple drop down menu containing the data, month and year menu. It’s good but not very user friendly as user need to select 3 menus to choose a certain date. I had to stick with that format as I mostly use PEAR HTML_QuickForm to design forms in the web pages. Among many reasons the most unavoidable one is that it automatically generates client side validation JavaScript code. With time I realized that I should find some options to integrate calendar object with the QuickForm.

After giving a thorough search I selected jscalendar to incorporate with my form elements. The reasons behind selecting jscalendar are:

  • It has a nice interface and wide variety of themes.
  • Multiple integration options along with selectable date format to put the date in the text field.
  • Support for integrating the calendar object with HTML_QuickForm.

Prior to integrate the jscalendar I need to upgrade HTML_QuickFom version to 3.2.10 as I found some code added in this version to support jscalendar. I also need to upgrade my PEAR DB package to version 1.7.13 and DB_Table to version 1.5.5. In my projects most of the cases I generate forms using DB_Table instead of using QuickForm directly. This gives an extra benefit for data validation and storing them in database.

After the up-gradating the required pear packages I worked upon integrating the jscalendar code. After a spending a moderate amount of time I was able to work jscalender with the QuickForm. But unfortunately when I was trying generate forms using DB_Table jscalendar component was not working. I was getting javascript errors.
I was following the method described by Philippe Jausions of 11abacus in jscalendar.php file. It was working fine with the QuickForm. In that case I was using addElements function to add jscalendar with proper options using the $option array like this –

[code lang=”php-brief”]
$options = array(
‘baseURL’ => ‘../js/jscalendar/’,
‘styleCss’ => ‘calendar-win2k-1.css’,
‘language’ => ‘en’,
‘button’ => ”,
‘setup’ => array(
‘inputField’ => ‘datefield1’,
‘ifFormat’ => ‘%d.%m.%Y %H:%M’,
‘showsTime’ => true,
‘time24’ => true,
‘weekNumbers’ => false,
‘showOthers’ => true
),
);
$form->addElement(‘jscalendar’, ‘ datefield1’, ‘My Date’, $options);
[/code]

I used this same option array in the column definition for the same field, as DB_Table uses the column definition for the attributes of the form elements of the form. I written like

Continue reading ‘QuickForm and Jscalendar’ »

My favorite

I am still searching theme for my blog. While doing so an idea came in to my mind. I must list my favorite movies in my blog. I have posted them in one of my earlier blog. Here I am cherishing them again.

First one is all about a battle. You might have seen this. If not watch it here. I’m sure you will like.

This is the 2nd highest viewed movie in YouTube . It almost near to 13.5 million views in YouTube. BBC has already reported this as fast biggest web video hits. Though its a amateur video but it is becoming the envy of professional wildlife snappers. The movie has got a professional quality script which many film director like to work with, but in reality there was no script! Its a battle between survivor(calf), paladins(group of buffalo), hero of land (lions) and owner of water(crocodile). The eight-minute-long footage shows nothing can be unachievable. Enjoy the The battle of Kruger ..
Some raw facts about battle of Kruger :

  • Place : a watering hole near Pretoriuskop Camp, Mpumalanga in South Africa’s Kruger National Park
  • Time : September 2004
  • Shooter : David Budzinski acconpanied by Jason Schlosberg
  • Submitted to Youtube : May 03, 2007

Now, a comment from Budzinski

“I’m not a camera person. I’m just lucky to have it!”

The second favorite movie is about time. Do you agree that sometimes each minute in our life becomes very important, vital or say crucial to our life? I’m pretty sure you will surely agree with me after watching this movie.

Some facts :

  • Its named as Just 10 minutes
  • Made by Ahmed Imamovic
  • The film won the award for the best European short film in 2002

I hope you like them both. I will come up with some php related issue in my next post very soon. Till then πŸ™‚

Start Rollout

Light!! Sound!! Action!!

Lets start.

Welcome to my blog. I gonna make my first post right now. Though I am not a good write but I feel at least I manage myself to express the thoughts that I like to share with others. I am not as good as regular blogger too, but I will definitely try my best to be like them.

Well this is a long awaiting moment for me since I had started blogging in another well known website. I was dreaming from that time to have my own blog in a domain owned by me. I dreamed, thought, planned, dropped all and started from scratch many times. Somehow I couldn’t reach the goal. May be I wasn’t enough prepared for that. But I kept the faith on myself that someday I will do it.

I have just started my own blog. Lots of things are already in my mind that I like to do, discuss over here. I am also looking for some good template for my blog. Good suggestions are always welcome. But I really dislike spams. Believe me or not, I have proven myself as spam assassinator in early times. The first thing I have done after installing the wordpress blog is, install the anti spam pluggin Akismet. I need to work on some message for the spammers too make them hate me. I will put that visible through out my blog.

I will come back with my next post very soon and I hope I will be able to get a suitable theme also.

Till then GoodLuck πŸ™‚