Countdowntimer in Minutes and Seconds

Countdowntimer in minutes and seconds

http://developer.android.com/reference/android/os/CountDownTimer.html

TextView _tv = (TextView) findViewById( R.id.textView1 );
new CountDownTimer(30000, 1000) { // adjust the milli seconds here

public void onTick(long millisUntilFinished) {
_tv.setText(""+String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes( millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
}

public void onFinish() {
_tv.setText("done!");
}
}.start();

Since java 1.5 there is the java.util.concurrent.TimeUnit class

 _tv.setText(""+String.format("%d min, %d sec", 
TimeUnit.MILLISECONDS.toMinutes( millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html

A TimeUnit represents time durations at a given unit of granularity and provides utility methods to convert across units, and to perform timing and delay operations in these units.

For Java versions below 1.5 or for systems that do not fully support the TimeUnit class the following equations can be used:

int seconds = (int) (milliseconds / 1000) % 60 ;
int minutes = (int) ((milliseconds / (1000*60)) % 60);
int hours = (int) ((milliseconds / (1000*60*60)) % 24);

To vibrate

 Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
v.vibrate(500);
<uses-permission android:name="android.permission.VIBRATE"/> // permission in manifest

Edit:

Vibrate at 4 min 55 seconds for 500 milli seconds

 if((TimeUnit.MILLISECONDS.toMinutes( millisUntilFinished)==4) &&
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))==55)
{

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
v.vibrate(500);
}

How to display minutes and seconds in countdowntimer

Try this

String text = String.format(Locale.getDefault(), "Time Remaining %02d min: %02d sec", 
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % 60,
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % 60);
tvTime.setText(text);

How to Show Countdown timer in HH:MM:SS (Hours : Minutes : Seconds)

It's helpful for you

 private void startTimer(int noOfMinutes) {
CountDownTimer countDownTimer = new CountDownTimer(noOfMinutes, 1000) {
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
//Convert milliseconds into hour,minute and seconds
String hms = String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
countdownTimerText.setText(hms);//set text
}
public void onFinish() {
countdownTimerText.setText("TIME'S UP!!"); //On finish change timer text
}
}.start();

Edited

//1584700200 is timestamp in milii seconds (Friday, March 20, 2020 10:30:00 AM) 
//1000(1sec) is time interval to call onTick method

new CountDownTimer(1584700200, 1000){

@Override

public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
String hms = String.format("%02d:%02d:%02d:%02d",
TimeUnit.HOURS.toDays(TimeUnit.MILLISECONDS.toHours(millis)),
(TimeUnit.MILLISECONDS.toHours(millis) -
TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(millis))),
(TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))), (TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))));
countdownTimerText.setText(hms);//set text
}

@Override

public void onFinish() {
/*clearing all fields and displaying countdown finished message */

countdownTimerText.setText("Count down completed");
}
}.start();
}

Kotlin

private fun countDown() {
val countDownTimer = object : CountDownTimer(1584700200, 1000) {
override fun onTick(p0: Long) {
val millis: Long = p0
val hms = String.format(
"%02d:%02d:%02d:%02d",
TimeUnit.HOURS.toDays(TimeUnit.MILLISECONDS.toDays(millis)),
(TimeUnit.MILLISECONDS.toHours(millis) - TimeUnit.DAYS.toHours(
TimeUnit.MILLISECONDS.toDays(
millis
)
)),
(TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))),
(TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(
TimeUnit.MILLISECONDS.toMinutes(millis)
))
)

System.out.println("Time : " + hms)
countdownTimerText.setText(hms);//set text
}

override fun onFinish() {
/*clearing all fields and displaying countdown finished message */
countdownTimerText.setText("Count down completed");
System.out.println("Time up")
}
}
countDownTimer.start()
}

How to change this countdown timer into minutes and seconds?

One minute = total / 60.

Seconds = total % 60.

Add 0 if minutes or seconds below 10.

Just add this calculations before adding to html.

var test = 3600;
$('button').click(function(){
if (localStorage.getItem("counter")) {
if (localStorage.getItem("counter") <= 0) {
var value = test;
}
else {
var value = localStorage.getItem("counter");
}
}
else {
var value = test;
}

$('#divCounter').text(value);

var counter = function() {
if (value == 0) {
localStorage.setItem("counter", test);
value = 0;
}
else {
value = parseInt(value) - 1;
localStorage.setItem("counter", value);
}
var minutes = Math.floor(value / 60)
var seconds = value % 60
if (minutes<10) minutes = '0'+minutes
if (seconds<10) seconds = '0'+seconds
$('#divCounter').text(minutes+':'+seconds);
};

var interval = setInterval(function() { counter(); }, 1000);
});

Java countdown timer minutes and seconds

You need to display remaining number of second i in format mimutes:seconds format. If you assume that there are always 60 seconds in a minute:

String time = String.format("%02d:%02d", i / 60, i % 60);
System.out.println(time);

ASP.NET countdown timer (hours, minutes, seconds)

Ok, so how to do this?

Well, we can do 100% server side code - great if you stuck - don't know JavaScript

So, say we drop in 3 labels

Drop in 3 text boxes.

Drop in a timer control.

Drop in 4 buttons - (see later how we use them).

we have this:

    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

<div style="width:350px;padding:20px">

<div style="margin:auto">

<div style="float:left">
<asp:Label ID="lblHours" runat="server" Text="Hours" Font-Size="Larger" ClientIDMode="Static"></asp:Label>
<br />
<asp:TextBox ID="txtHours" runat="server" Text="0" ClientIDMode="Static" CssClass="tbox"></asp:TextBox>
</div>

<div style="float:left;margin-left:20px">
<asp:Label ID="lblMin" runat="server" Text="Minutes" Font-Size="Larger"></asp:Label>
<br />
<asp:TextBox ID="txtMin" runat="server" Text="0" CssClass="tbox" ClientIDMode="Static"></asp:TextBox>
</div>

<div style="float:left;margin-left:15px">
<asp:Label ID="lblsec" runat="server" Text="Seconds" Font-Size="Larger"></asp:Label>
<br />
<asp:TextBox ID="txtSec" runat="server" BorderStyle="Solid" Text="5" CssClass="tbox" ClientIDMode="Static" ></asp:TextBox>
</div>

<div style="clear:both;height:15px"></div>

<div style="margin:auto">
<asp:Button ID="cmdStart" runat="server" Text="Start" />
<asp:Button ID="cmdStop" runat="server" Text="Stop" style="margin-left:20px" />

<asp:Button ID="cmdStartJS" runat="server" Text="Start JS" style="margin-left:20px"
OnClientClick="mystart();return false" />
<asp:Button ID="cmdStopJS" runat="server" Text="Stop JS" style="margin-left:20px"
OnClientClick="mystop();return false"/>
<br />
<asp:Label ID="lblDone" runat="server" Text="" ClientIDMode="Static"></asp:Label>
</div>

</div>
</div>
<asp:Timer ID="Timer1" runat="server"></asp:Timer>

And our code will look like this:

Protected Sub cmdStart_Click(sender As Object, e As EventArgs) Handles cmdStart.Click

' take entered values - convert to time
Dim MyTime As DateTime
MyTime = TimeSerial(txtHours.Text, txtMin.Text, txtSec.Text)

' save time value
ViewState("MyTime") = MyTime

Timer1.Interval = 1000 ' upddate every one second
Timer1.Enabled = True ' start the timer.
lblDone.Text = "Started"
End Sub

Protected Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

Dim myTime As DateTime = ViewState("MyTime")

' check if we are to stop
If myTime <= TimeSerial(0, 0, 0) Then
Timer1.Enabled = False ' turn off timer
' do whatever for end of timer
lblDone.Text = "Done!"
Exit Sub
End If

Dim OneSecond As TimeSpan = TimeSpan.FromSeconds(1)

myTime = myTime - OneSecond
' update text boxes
txtHours.Text = myTime.Hour
txtMin.Text = myTime.Minute
txtSec.Text = myTime.Second

ViewState("MyTime") = myTime

End Sub

Protected Sub cmdStop_Click(sender As Object, e As EventArgs) Handles cmdStop.Click
Timer1.Enabled = False
End Sub

Output:

Sample Image

So the above is very similar to say desktop approach. (and like on desktop, we even dropped in that timer control).

The downside of course is this means a post-back for each 1 second.

But, we could surround the above markup with a update-panel - and it would be and look butter smooth.

The 2nd way:

100% Client side code.

So, with the above page, lets write the JavaScript code for the "js buttons"

We have this (I do assume this page has use of jQuery - but that's quite much assumed these days).

<script>

MyTime = new Date(0,0,0,0,0,0)
TimeZero = new Date(0,0,0,0,0,0)
MyTimer = 0

tH = $("#txtHours")
tM = $("#txtMin")
tS = $("#txtSec")

function mystart() {

MyTime.setHours(tH.val())
MyTime.setMinutes(tM.val())
MyTime.setSeconds(tS.val())

if (MyTime > TimeZero) {
MyTimer = setInterval(mytic,1000)
$("#lblDone").text("Start")
}
}

function mytic() {

MyTime.setSeconds(MyTime.getSeconds() - 1)

tH.val(MyTime.getHours())
tM.val(MyTime.getMinutes())
tS.val(MyTime.getSeconds())

if (MyTime <= TimeZero) {
clearInterval(MyTimer)
$("#lblDone").text("Done !!!")
}
}

function mystop() {
clearInterval(MyTimer)
}
</script>

So both the JavaScript, or the server side code does quite much the same thing.

The major difference you note is that the client side code?
It never hits the server side, and thus looks quite a bit smoother.

Countdown Timer every 15-Minutes in the hour

That solution seems overly complicated and you should be definitely using setInterval for a task where you have to update something every x seconds, recursively calling setTimeout is a bad idea. Here is a solution that is much more understandable:

const runEvery = 15 * 60; // 15 minutes in seconds

const showRemaining = () => {
// get current time in seconds and find when the next run starts in seconds
const seconds = Math.round(Date.now() / 1000);
const nextRun = runEvery * Math.ceil(seconds / runEvery);

const timeLeft = nextRun - seconds;

const minutesLeft = Math.floor(timeLeft / 60);
const secondsLeft = timeLeft % 60;

document.getElementById('clock').textContent = minutesLeft + ':' + ('0' + secondsLeft).slice(-2);
}

showRemaining();
setInterval(showRemaining, 1000);
<div id="clock"></div>

How can I make a timer that shows minutes and seconds?

Firstly You have to change time in hour and minute.

      minutes = (totalSecond % 3600) / 60
seconds = (totalSecond % 3600) % 60

After that you have to change in Hour:Minute format.

timeView1.text = String(format: "%02d:%02d",minutes,seconds)



Related Topics



Leave a reply



Submit