Welcome!

Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

Native Development

Reply
Regular Contributor
wibi_okezone
Posts: 51
Registered: ‎04-24-2013
My Device: Z10
My Carrier: Telkomsel

Create function time ago in qml

I want convert daet like 2 days ago. 

I read in qml can use javascript function so i add javascript function but the time show incorrectly.

 

Here is the javascript function, i copy from http://webdesign.onyou.ch/2010/08/04/javascript-time-ago-pretty-date/

function prettyDate(date_str){
	var time_formats = [
	[60, 'just now', 1], // 60
	[120, '1 minute ago', '1 minute from now'], // 60*2
	[3600, 'minutes', 60], // 60*60, 60
	[7200, '1 hour ago', '1 hour from now'], // 60*60*2
	[86400, 'hours', 3600], // 60*60*24, 60*60
	[172800, 'yesterday', 'tomorrow'], // 60*60*24*2
	[604800, 'days', 86400], // 60*60*24*7, 60*60*24
	[1209600, 'last week', 'next week'], // 60*60*24*7*4*2
	[2419200, 'weeks', 604800], // 60*60*24*7*4, 60*60*24*7
	[4838400, 'last month', 'next month'], // 60*60*24*7*4*2
	[29030400, 'months', 2419200], // 60*60*24*7*4*12, 60*60*24*7*4
	[58060800, 'last year', 'next year'], // 60*60*24*7*4*12*2
	[2903040000, 'years', 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12
	[5806080000, 'last century', 'next century'], // 60*60*24*7*4*12*100*2
	[58060800000, 'centuries', 2903040000] // 60*60*24*7*4*12*100*20, 60*60*24*7*4*12*100
	];
	var time = ('' + date_str).replace(/-/g,"/").replace(/[TZ]/g," ").replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	if(time.substr(time.length-4,1)==".") time =time.substr(0,time.length-4);
	var seconds = (new Date - new Date(time)) / 1000;
	var token = 'ago', list_choice = 1;
	if (seconds < 0) {
		seconds = Math.abs(seconds);
		token = 'from now';
		list_choice = 2;
	}
	var i = 0, format;
	while (format = time_formats[i++]) 
		if (seconds < format[0]) {
			if (typeof format[2] == 'string')
				return format[list_choice];
			else
				return Math.floor(seconds / format[2]) + ' ' + format[1] + ' ' + token;
		}
	return time;
}

 and my time format is datetime (2012-01-01 17:00:00).

Thanks.

Please use plain text.
Developer
dcharya
Posts: 74
Registered: ‎03-04-2012
My Device: developer
My Carrier: developer

Re: Create function time ago in qml

try this code 

function milisecondsToString(miliseconds) {
                try {
                    //get different date time initials.
                    var myDate = new Date();
                    var difference_ms = myDate.getTime() - miliseconds * 1000;
                    //take out milliseconds
                    difference_ms = difference_ms / 1000;
                    var seconds = Math.floor(difference_ms % 60);
                    difference_ms = difference_ms / 60;
                    var minutes = Math.floor(difference_ms % 60);
                    difference_ms = difference_ms / 60;
                    var hours = Math.floor(difference_ms % 24);
                    difference_ms = difference_ms / 24;
                    var days = Math.floor(difference_ms % 7);
                    difference_ms = difference_ms / 7;
                    var weeks = Math.floor(difference_ms);

                    //remove weeks if it exceeds the month limit ie. 4weeks+2days.
                    var months = 0;
                    if ((weeks == 4 && days >= 2) || (weeks > 4)) {
                        difference_ms = difference_ms * 7;
                        days = Math.floor(difference_ms % 30);
                        difference_ms = difference_ms / 30;
                        months = Math.floor(difference_ms);
                        weeks = 0;
                    }
                    //check and return the largest value of date time initialized.
                    if (months > 0) {
                        return months + "M ago";
                    } else if (weeks != 0) {
                        return weeks + "W ago";
                    } else if (days != 0) {
                        return days + "d ago";
                    } else if (hours != 0) {
                        return hours + "h ago";
                    } else if (minutes != 0) {
                        return minutes + "m ago";
                    } else if (seconds != 0) {
                        return seconds + "s ago";
                    }
                } catch (e) {
                    alert(e);
                }
            }

 

Deepak Charya
Please use plain text.