Countdown timer hour reset with history - php

I'm trying to make countdown timer that resets itself every 60 minutes and wont reset on every refresh.
I think the ideal way to do this is via timezone?

There are multiple ways to perform this, but usually i'd recommend storing the unix-timestamp in a MySQL Database, then fetch and compare the previous/stored unix-timestamp with the current timestamp. The PHP-function time() will get you the current timestamp.
If the entire project is about making a counter, you can probably achieve the same effect by writing/loading from a text-file. The same goes for sessions.
Here's a little snippet to give you an idea of how to solve this:
if (($unixtime + (60 * 60)) > time()) //previous time + 60 * 60 sec (60 min).
{
//update counter
}
//present counter

Related

Time calculation activity in Php

I am working on a web application, in which a web user activity is to be block form half hour before of given time.
I need to calculate time half hour before of given time.
Means if a date and time give like 08/04/2015 16:00:00
now need to calculate time half hour before of the given time i.e. 08/04/2015 15:30:00 during this a web activity is blocked for end user.
Please give me suggestion and sample code in PHP.
you can take this for your refrence,
but you need to modify the code as per your requirements
$start_time = strtotime("2008-12-13 10:42:00"); // get this time while user loggs in
$end_time = strtotime(date('Y-m-d H:i:s'));// this is dynamic time, it changes everytime when the page is reloaded
$difference_in_minutes = round(abs($end_time - $start_time) / 60,2); // this will return the diference between two times in minutes
if($difference_in_minutes >= 30)
{
// do you 30 minutes block stuff here
}
let me know if any further classification needed

Converting Epoch time to an H:mm timestamp in PHP

This seems like there should be a very easy solution, however everything I'm trying is either giving me an error or the wrong result.
I'm pulling data from a MySQL table and the time is stored in the Epoch format in the database. When I make the query on the website it's showing: 3672 (the same number shown in the database). I've tried using the date() function, a number of different str* functions, different arithmetic operations, however nothing is giving me the actual time, which should be showing as: '1:02'.
I'm not trying to pull the date, actual time, etc. I'm just trying to convert an Epoch time string to a traditional 'H:mm' format, because these are for durations, not timestamps.
Any help would be greatly appreciated!
As others already noticed, this is not really any standard epoch time but simply number of seconds since midnight.
Looking at your example, you only need hours and minutes (rounded up). This will give you those:
$h = (int)($number / 3600);
$m = ceil(($number - $h * 3600) / 60);
$result = sprintf('%d:%02d', $h, $m);
Dividing number by 3600 (60 for seconds * 60 for minutes) will give you number of hours. Using your example of 3672 this will give you 1.
To get minutes you just remove hours to get seconds (72) and then divide that by 60 to get minutes (1 minutes and 12 seconds). Since your example specifies 1:02 is result, you can simply take next upper integer (2).
At end result is 1:02, as you specified.

time count after registry

I saw some website that after you have registered, you can use the service like posting a comment immediately.
You may have to wait for 5 or 10 minutes to be able to start, like this StackOverflow website.
Once you have asked question, you have to wait 20 minutes to select your answer.
If I want to do it in JavaScript or PHP can anyone show me how to do it? I assume you have to compare the time with current time-stamp, but don't know how to exactly implement it. Thanks in advance!
Assuming you have a datetime string stored in a variable, you could do something like:
// TODO: get a datetime string into $time
$minutes = 5;
if (strtotime($time) + $minutes * 60 < time()) {
// It's been 5 minutes since $time
}
In PHP:
$wait_time = 10*60; //10 minutes * 60 seconds
if(time() > $start_time + $wait_time) {
}
sure, you'll want to compare the date of posting, with the current date, but then formulate the conditions that will validate a new post or the selection of the same.
Each question that is posted will require server side storage, if not exclusively in a db then there will need to be at least a record in a table linking the question to the user.
Once a question has been posted you could either have the server side script that loads the question carry out the following tasks.
Get the question entry
Is the person that posted the question the current requesting user
[yes]
Is the request time minus the post time greater than (number of mins * 60)
[yes]
Include select answer buttons (html objects or buttons)
Alternatively you could always show the buttons and carry out the above logic and return some indication that the user must wait x minutes before they can select an answer.
You have to store the creation time (of whatever object or saving) along with the item being created in the database. So for example, if you create a question on SO, they probably store the time you posted the question. Then when you go to view your question, they probably get the difference between the current time and the time stored.
So say that you want to implement a 20 minute wait after posting a question before you can select an answer. Then you upload a question at 5:00 PM. When you attempt to view your question at 5:05PM the same day, the difference in time is 5:05PM - 5:00PM, which is 5 minutes. Take 20 minutes - 5 minutes to get the time the user must wait, and send that back to the page.
From javascript you can get that time limit (15min), and create a setTimeout method to "unlock" the answer feature. The code would look something like this:
<input type="hidden" id="waitfor" value="15">
$(document).ready(function () {
var waitfor = $('#waitfor').val();
timer = setTimeout(function () {
// let the user know they can post an answer
}, waitfor * 60 * 1000);
});
Also, I'd let the user post an answer whenever they'd like, but prevent it being submitted on the client side if it hasn't been 20 minutes.

Number of seconds until every 20 minutes

For a game I'm making, each turn is at :00, :20, and :40 past the hour. I am trying to create a countdown that will display the number of minutes (and eventually seconds) to the next turn.
My current approach is to store the time of the next turn in a database, then doing
$time = time() - $time_to_turn
where time_to_turn is the database entry of the next turn time.
Is there a way to not use the database?
Try $minutesRemaining = 20 - date('i') % 20; or $secondsRemaining = 1200 - date('s') % 1200

How to get how many hour minute seconds laps on message on php mysql?

How to get how many hour minute seconds laps on message on php mysql?
like
23 seconds ago
1 minute ago
is this possible?
A really simple way is using the jQuery plugin timeago http://timeago.yarp.com/
The neat thing about it is, that it updates the entries while viewing the page :)
In db table create field time INT(10). Insert in this filed php time().
In script check diff:
$diff = time() - $time_from_db;
echo $diff . 'seconds ago'.
If you did want to have the data fed from the database you could write SQL like this:
SELECT FLOOR((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(your_date)) / 86400) as days FROM your_table
(MySQL example)
You could should then repeat for hours, minutes etc. subtracting the reminder.
From your result you would have $result['days'] available.
This said I would go for the timeago solution mentioned by Tim. But it is hard to say not knowing your application.

Categories