sz1370
چهارشنبه 13 اسفند 1393, 09:48 صبح
سلام دوستان .من یک پروژه دارم قراره از طریق ساعت گوشی زمان رو در نظر بگیره و تا روز تولدم تا سال آینده بطور makoos بشماره و بگه تا روز تولد من چند روز و چندساعت و دقیقه و ثانیه مونده:مثلا تاریخ و ساعت امروز رو بطور اتوماتیک در نظر بگیره و بگه تا روز 13 برج 3 سال 94 (94/3/12) چقدر مونده!!! کسی می تونه تو نوشتن کدش کمکم کنه؟
فرمتش به این صورت باشه 120 روز 6666:666:66
اين كد رو هم نوشتم ولي خطا داره ممنون ميشم تو اصلاحش كمكم كنيد
sz1370
جمعه 15 اسفند 1393, 13:39 عصر
یعنی هیچکس نیست بتونه کمکم کنه؟؟؟
tux-world
شنبه 16 اسفند 1393, 00:34 صبح
سلام. خوب ما اکثر وقت خالی برای کار روی پروژه های دوستان رو نداریم و فقط میتونیم جاهایی که مشکل دارن رو بررسی کنیم و بهشون بگیم راه حل رو شما هم همین کار رو بکنید. کار روی پروژه ممکنه خیلی زمان بر باشه و از این لحاظ ممکنه اصلا نصرفه روش وقت بزاریم. تو گوگل Reverse timer رو سرچ بکنید
sz1370
یک شنبه 17 اسفند 1393, 12:34 عصر
سلام من واسه اين همچين كدي زدم به شرح زير تو صفحه ....mainactivty ....اين برنامه بهمن خطا ميده دوستان اگر ميتونن كمكم كنند....
package com.example.a;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;
import android.text.format.Time;
public class MainActivity extends Activity {
private String Time;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CountdownChronometer countdowner = (CountdownChronometer)findViewById(R.id.chronomete r);
countdowner.setBase(((System.currentTimeMillis()-Long.parseLong(Time))/1000)%60);
countdowner.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
و در صفحه CountdownChronometer.java اين خطوط رو
package com.example.a;
import java.util.Formatter;
import java.util.IllegalFormatException;
import java.util.Locale;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.Chronometer;
public class CountdownChronometer extends Chronometer {
private static final String TAG = "CountdownChronometer";
private static final String FAST_FORMAT_DHHMMSS = "%1$02d:%2$02d:%3$02d:%4$02d";
private static final String FAST_FORMAT_HMMSS = "%1$02d:%2$02d:%3$02d";
private static final String FAST_FORMAT_MMSS = "%1$02d:%2$02d";
private static final char TIME_PADDING = '0';
private static final char TIME_SEPARATOR = ':';
private long mBase;
private boolean mVisible;
private boolean mStarted;
private boolean mRunning;
private boolean mLogged;
private String mFormat;
private Formatter mFormatter;
private Locale mFormatterLocale;
private Object[] mFormatterArgs = new Object[1];
private StringBuilder mFormatBuilder;
private OnChronometerTickListener mOnChronometerTickListener;
private OnChronometerTickListener mOnCountdownCompleteListener;
private StringBuilder mRecycle = new StringBuilder(8);
private String mChronoFormat;
private static final int TICK_WHAT = 3;
public CountdownChronometer(Context context) {
this(context, null, 0, 0);
}
public CountdownChronometer(Context context, long base) {
this(context, null, 0, base);
}
public CountdownChronometer(Context context, AttributeSet attrs) {
this(context, attrs, 0, 0);
}
public CountdownChronometer(Context context, AttributeSet attrs,
int defStyle, long base) {
super(context, attrs, defStyle);
init(base);
}
private void init(long base) {
mBase = base;
updateText(System.currentTimeMillis());
}
@Override
public void setBase(long base) {
mBase = base;
dispatchChronometerTick();
updateText(System.currentTimeMillis());
}
@Override
public long getBase() {
return mBase;
}
@Override
public void setFormat(String format) {
mFormat = format;
if (format != null && mFormatBuilder == null) {
mFormatBuilder = new StringBuilder(format.length() * 2);
}
}
@Override
public String getFormat() {
return mFormat;
}
public void setCustomChronoFormat(String chronoFormat) {
this.mChronoFormat = chronoFormat;
}
public String getCustomChronoFormat() {
return mChronoFormat;
}
@Override
public void setOnChronometerTickListener(OnChronometerTickList ener listener) {
mOnChronometerTickListener = listener;
}
@Override
public OnChronometerTickListener getOnChronometerTickListener() {
return mOnChronometerTickListener;
}
public void setOnCompleteListener(OnChronometerTickListener listener) {
mOnCountdownCompleteListener = listener;
}
public OnChronometerTickListener getOnCompleteListener() {
return mOnCountdownCompleteListener;
}
@Override
public void start() {
mStarted = true;
updateRunning();
}
@Override
public void stop() {
mStarted = false;
updateRunning();
}
public void setStarted(boolean started) {
mStarted = started;
updateRunning();
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mVisible = false;
updateRunning();
}
@Override
protected void onWindowVisibilityChanged(int visibility) {
super.onWindowVisibilityChanged(visibility);
mVisible = visibility == VISIBLE;
updateRunning();
}
private synchronized boolean updateText(long now) {
long seconds = mBase - now;
seconds /= 1000;
boolean stillRunning = true;
if (seconds <= 0) {
stillRunning = false;
seconds = 0;
}
String text = formatRemainingTime(mRecycle, seconds);
if (mFormat != null) {
Locale loc = Locale.getDefault();
if (mFormatter == null || !loc.equals(mFormatterLocale)) {
mFormatterLocale = loc;
mFormatter = new Formatter(mFormatBuilder, loc);
}
mFormatBuilder.setLength(0);
mFormatterArgs[0] = text;
try {
mFormatter.format(mFormat, mFormatterArgs);
text = mFormatBuilder.toString();
} catch (IllegalFormatException ex) {
if (!mLogged) {
Log.w(TAG, "Illegal format string: " + mFormat);
mLogged = true;
}
}
}
setText(text);
return stillRunning;
}
private void updateRunning() {
boolean running = mVisible && mStarted;
if (running != mRunning) {
if (running) {
if (updateText(System.currentTimeMillis())) {
dispatchChronometerTick();
mHandler.sendMessageDelayed(
Message.obtain(mHandler, TICK_WHAT), 1000);
} else {
running = false;
mHandler.removeMessages(TICK_WHAT);
}
} else {
mHandler.removeMessages(TICK_WHAT);
}
mRunning = running;
}
}
private Handler mHandler = new Handler() {
public void handleMessage(Message m) {
if (mRunning) {
if (updateText(System.currentTimeMillis())) {
dispatchChronometerTick();
sendMessageDelayed(Message.obtain(this, TICK_WHAT), 1000);
} else {
dispatchCountdownCompleteEvent();
stop();
}
}
}
};
void dispatchChronometerTick() {
if (mOnChronometerTickListener != null) {
mOnChronometerTickListener.onChronometerTick(this) ;
}
}
void dispatchCountdownCompleteEvent() {
if (mOnCountdownCompleteListener != null) {
mOnCountdownCompleteListener.onChronometerTick(thi s);
}
}
private String formatRemainingTime(StringBuilder recycle,
long elapsedSeconds) {
long days = 0;
long hours = 0;
long minutes = 0;
long seconds = 0;
if (elapsedSeconds >= 86400) {
days = elapsedSeconds / 86400;
elapsedSeconds -= days * 86400;
}
if (elapsedSeconds >= 3600) {
hours = elapsedSeconds / 3600;
elapsedSeconds -= hours * 3600;
}
if (elapsedSeconds >= 60) {
minutes = elapsedSeconds / 60;
elapsedSeconds -= minutes * 60;
}
seconds = elapsedSeconds;
if (mChronoFormat != null) {
return formatRemainingTime(recycle, mChronoFormat, days, hours,
minutes, seconds);
} else if (days > 0) {
return formatRemainingTime(recycle, FAST_FORMAT_DHHMMSS, days,
hours, minutes, seconds);
} else if (hours > 0) {
return formatRemainingTime(recycle, FAST_FORMAT_HMMSS, hours,
minutes, seconds);
} else {
return formatRemainingTime(recycle, FAST_FORMAT_MMSS, minutes,
seconds);
}
}
private static String formatRemainingTime(StringBuilder recycle,
String format, long days, long hours, long minutes, long seconds) {
if (FAST_FORMAT_DHHMMSS.equals(format)) {
StringBuilder sb = recycle;
if (sb == null) {
sb = new StringBuilder(8);
} else {
sb.setLength(0);
}
sb.append(days);
sb.append(TIME_SEPARATOR);
if (hours < 10) {
sb.append(TIME_PADDING);
} else {
sb.append(toDigitChar(hours / 10));
}
sb.append(toDigitChar(hours % 10));
sb.append(TIME_SEPARATOR);
if (minutes < 10) {
sb.append(TIME_PADDING);
} else {
sb.append(toDigitChar(minutes / 10));
}
sb.append(toDigitChar(minutes % 10));
sb.append(TIME_SEPARATOR);
if (seconds < 10) {
sb.append(TIME_PADDING);
} else {
sb.append(toDigitChar(seconds / 10));
}
sb.append(toDigitChar(seconds % 10));
return sb.toString();
} else {
return String.format(format, days, hours, minutes, seconds);
}
}
private static String formatRemainingTime(StringBuilder recycle,
String format, long hours, long minutes, long seconds) {
if (FAST_FORMAT_HMMSS.equals(format)) {
StringBuilder sb = recycle;
if (sb == null) {
sb = new StringBuilder(8);
} else {
sb.setLength(0);
}
sb.append(hours);
sb.append(TIME_SEPARATOR);
if (minutes < 10) {
sb.append(TIME_PADDING);
} else {
sb.append(toDigitChar(minutes / 10));
}
sb.append(toDigitChar(minutes % 10));
sb.append(TIME_SEPARATOR);
if (seconds < 10) {
sb.append(TIME_PADDING);
} else {
sb.append(toDigitChar(seconds / 10));
}
sb.append(toDigitChar(seconds % 10));
return sb.toString();
} else {
return String.format(format, hours, minutes, seconds);
}
}
private static String formatRemainingTime(StringBuilder recycle,
String format, long minutes, long seconds) {
if (FAST_FORMAT_MMSS.equals(format)) {
StringBuilder sb = recycle;
if (sb == null) {
sb = new StringBuilder(8);
} else {
sb.setLength(0);
}
if (minutes < 10) {
sb.append(TIME_PADDING);
} else {
sb.append(toDigitChar(minutes / 10));
}
sb.append(toDigitChar(minutes % 10));
sb.append(TIME_SEPARATOR);
if (seconds < 10) {
sb.append(TIME_PADDING);
} else {
sb.append(toDigitChar(seconds / 10));
}
sb.append(toDigitChar(seconds % 10));
return sb.toString();
} else {
return String.format(format, minutes, seconds);
}
}
private static char toDigitChar(long digit) {
return (char) (digit + '0');
}
}
parniaznet
یک شنبه 17 اسفند 1393, 12:53 عصر
سلام
این کد دقیقا چیزی رو که می خوای انجام میده
تغییرات دلخواهت رو روش اعمال کن
public class DemotimerActivity extends Activity {
/** Called when the activity is first created. */
TextView tv;
long diff;
long milliseconds;
long endTime;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv = new TextView(this);
this.setContentView(tv);
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
formatter.setLenient(false);
String oldTime = "21.10.2013, 12:00";
Date oldDate;
try {
oldDate = formatter.parse(oldTime);
milliseconds = oldDate.getTime();
//long startTime = System.currentTimeMillis();
// do your work...
long endTime=System.currentTimeMillis();
diff = endTime-milliseconds;
Log.e("day", "miliday"+diff);
long seconds = (long) (diff / 1000) % 60 ;
Log.e("secnd", "miliday"+seconds);
long minutes = (long) ((diff / (1000*60)) % 60);
Log.e("minute", "miliday"+minutes);
long hours = (long) ((diff / (1000*60*60)) % 24);
Log.e("hour", "miliday"+hours);
long days = (int)((diff / (1000*60*60*24)) % 365);
Log.e("days", "miliday"+days);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Long serverUptimeSeconds = (System.currentTimeMillis() - milliseconds) / 1000;
String serverUptimeText = String.format("%d days %d hours %d minutes %d seconds",
serverUptimeSeconds / 86400,
( serverUptimeSeconds % 86400) / 3600 ,
((serverUptimeSeconds % 86400) % 3600 ) / 60,
((serverUptimeSeconds % 86400) % 3600 ) % 60
);
Log.v("jjj", "miliday"+serverUptimeText);
MyCount counter = new MyCount(milliseconds,1000);
counter.start();
}
// countdowntimer is an abstract class, so extend it and fill in methods
public class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
tv.setText("done!");
}
@Override
public void onTick(long millisUntilFinished) {
//tv.setText("Left: " + millisUntilFinished / 1000);
long diff = endTime - millisUntilFinished;
Log.e("left", "miliday"+diff);
long seconds = (long) (diff / 1000) % 60 ;
//Log.e("secnd", "miliday"+seconds);
long minutes = (long) ((diff / (1000*60)) % 60);
//Log.e("minute", "miliday"+minutes);
long hours = (long) ((diff / (1000*60*60)) % 24);
//Log.e("hour", "miliday"+hours);
int days = (int)((diff / (1000*60*60*24)) % 365);
Log.v("days", "miliday"+days);
Long serverUptimeSeconds =
(System.currentTimeMillis() - millisUntilFinished) / 1000;
String serverUptimeText =
String.format("%d days %d hours %d minutes %d seconds",
serverUptimeSeconds / 86400,
( serverUptimeSeconds % 86400) / 3600 ,
((serverUptimeSeconds % 86400) % 3600 ) / 60,
((serverUptimeSeconds % 86400) % 3600 ) % 60
);
Log.v("new its", "miliday"+serverUptimeText);
// tv.setText(days +":"+hours+":"+minutes + ":" + seconds);
tv.setText(serverUptimeText);
}
}
}
parniaznet
یک شنبه 17 اسفند 1393, 12:55 عصر
این هم کد های مشابه دیگه :
https://github.com/CardinalNow/Android-CountdownTimer
http://stackoverflow.com/questions/11875403/android-countdown-timer-to-date
sz1370
یک شنبه 17 اسفند 1393, 19:02 عصر
سلام ممنون از کمکتون ولی اون تعداد روز گذشته رو نشون میده من میخوام باقیمانده رو نشون بده مثلا تا برنامه اجرا شد بگه از امروز تاسال دیگه 2014/06/12 چند روز مونده
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.