sz1370
چهارشنبه 13 اسفند 1393, 10:48 صبح
سلام دوستان .من یک پروژه دارم قراره از طریق ساعت گوشی زمان رو در نظر  بگیره و تا روز تولدم تا سال آینده بطور makoos  بشماره و بگه تا روز تولد  من چند روز و چندساعت و دقیقه و ثانیه مونده:مثلا تاریخ و ساعت امروز رو  بطور اتوماتیک در نظر بگیره و بگه تا روز 13 برج 3 سال 94 (94/3/12) چقدر  مونده!!!   کسی می تونه تو نوشتن کدش کمکم کنه؟
 فرمتش به این صورت باشه  120 روز  6666:666:66
اين كد رو هم نوشتم ولي خطا داره ممنون ميشم تو اصلاحش كمكم كنيد
sz1370
جمعه 15 اسفند 1393, 14:39 عصر
یعنی هیچکس نیست بتونه کمکم کنه؟؟؟
tux-world
شنبه 16 اسفند 1393, 01:34 صبح
سلام. خوب ما اکثر وقت خالی برای کار روی پروژه های دوستان رو نداریم و فقط میتونیم جاهایی که مشکل دارن رو بررسی کنیم و بهشون بگیم راه حل رو شما هم همین کار رو بکنید. کار روی پروژه ممکنه خیلی زمان بر باشه و از این لحاظ ممکنه اصلا نصرفه روش وقت بزاریم. تو گوگل Reverse timer رو سرچ بکنید
sz1370
یک شنبه 17 اسفند 1393, 13: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, 13: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, 13:55 عصر
این هم کد های مشابه دیگه :
https://github.com/CardinalNow/Android-CountdownTimer
http://stackoverflow.com/questions/11875403/android-countdown-timer-to-date
sz1370
یک شنبه 17 اسفند 1393, 20:02 عصر
سلام ممنون از کمکتون ولی اون تعداد روز گذشته رو نشون میده من میخوام باقیمانده رو نشون بده مثلا تا برنامه اجرا شد بگه از امروز تاسال دیگه 2014/06/12 چند روز مونده
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.