Milad-Mohammadi 401 ارسال شده در 3 شهریور، ۱۳۹۸ اشتراک گذاری ارسال شده در 3 شهریور، ۱۳۹۸ سلام دوستان خسته نباشید من دارم یه روزشمار میسازم. تقریبا همه چیش درست کار میکنه اما دوتا ایراد داره 1. توی محاسبه تعداد ماه ها درست عمل نمیکنه 2. پشت تعداد ماه ها منفی میاد با وجود اینکه من زمان آینده رو از گذشته کم میکنم حس میکنم مشکل توی بخش ضرب و تقسیم روزها باشه! public void countDownStart(final String examTime) { handler = new Handler(); runnable = new Runnable() { @SuppressLint("DefaultLocale") @Override public void run() { handler.postDelayed(this, 1000); try { @SuppressLint("SimpleDateFormat") SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); // فرمت تاریخ هست که طبق چیزی که توی سایت جاوا بود وارد کردم Date futureDate = dateFormat.parse(examTime); Date currentDate = new Date(); if (!currentDate.after(futureDate)) { long difference = futureDate.getTime() - currentDate.getTime(); long months = difference / (30 * 24 * 60 * 60 * 1000); difference -= months * (30 * 24 * 60 * 60 * 1000); long days = difference / (24 * 60 * 60 * 1000); difference -= days * (24 * 60 * 60 * 1000); long hours = difference / (60 * 60 * 1000); difference -= hours * (60 * 60 * 1000); long minutes = difference / (60 * 1000); difference -= minutes * (60 * 1000); long seconds = difference / 1000; txt_month.setText("" + String.format("%02d", months)); txt_day.setText("" + String.format("%02d", days)); txt_hour.setText("" + String.format("%02d", hours)); txt_min.setText("" + String.format("%02d", minutes)); txt_scd.setText("" + String.format("%02d", seconds)); } } catch (Exception e) { e.printStackTrace(); } } }; handler.postDelayed(runnable, 1000); } examTime همون زمان آینده هست که روزشماری میشه تا اون. و به این صورت از بیرون داده میشه: countDownStart("2020-02-01 23:50:00"); ممنون میشم راهنمایی کنید لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
Milad-Mohammadi 401 ارسال شده در 4 شهریور، ۱۳۹۸ سازنده اشتراک گذاری ارسال شده در 4 شهریور، ۱۳۹۸ در 3 دقیقه قبل، محمدرضا شاهپیری گفته است : سلام. سوال دوست دیگرمون هم بوده. کد زیر رو تست کنید. SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy, HH:mm:ss"); formatter.setLenient(false); String endTime = "25.06.2017, 15:05:36" Date endDate; try { endDate = formatter.parse(endTime); milliseconds = endDate.getTime(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } startTime = System.currentTimeMillis(); diff = milliseconds - startTime; mCountDownTimer = new CountDownTimer(milliseconds, 1000) { @Override public void onTick(long millisUntilFinished) { startTime=startTime-1; Long serverUptimeSeconds = (millisUntilFinished - startTime) / 1000; String daysLeft = String.format("%d", serverUptimeSeconds / 86400); txtViewDays.setText(daysLeft); String hoursLeft = String.format("%d", (serverUptimeSeconds % 86400) / 3600); txtViewHours.setText(hoursLeft); String minutesLeft = String.format("%d", ((serverUptimeSeconds % 86400) % 3600) / 60); txtViewMinutes.setText(minutesLeft); String secondsLeft = String.format("%d", ((serverUptimeSeconds % 86400) % 3600) % 60); txtViewSecond.setText(secondsLeft); } @Override public void onFinish() { } }.start(); } ممنون بابت جوابتون من تابع رو اینطور تغییر دادم و درست شد: public void countDownStart(final String examTime) { handler = new Handler(); runnable = new Runnable() { @SuppressLint("DefaultLocale") @Override public void run() { handler.postDelayed(this, 1000); try { @SuppressLint("SimpleDateFormat") SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date futureDate = dateFormat.parse(examTime); Date currentDate = new Date(); if (!currentDate.after(futureDate)) { long difference = futureDate.getTime() - currentDate.getTime(); long totalDays = difference / (24 * 60 * 60 * 1000); long day = TimeUnit.MILLISECONDS.toDays(difference); day %= 365; long month = day / 30; day %= 30; long hour = TimeUnit.MILLISECONDS.toHours(difference) - TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(difference)); long min = TimeUnit.MILLISECONDS.toMinutes(difference) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(difference)); long sec = TimeUnit.MILLISECONDS.toSeconds(difference) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(difference)); txt_month.setText("" + String.format("%02d", month)); txt_day.setText("" + String.format("%02d", day)); txt_hour.setText("" + String.format("%02d", hour)); txt_min.setText("" + String.format("%02d", min)); txt_scd.setText("" + String.format("%02d", sec)); txt_mandeh.setText("" + String.format("%02d", totalDays) + " " + "روز تا زمان تعیین شده باقی مانده است!"); } } catch (Exception e) { e.printStackTrace(); } } }; handler.postDelayed(runnable, 1000); } لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,492 ارسال شده در 3 شهریور، ۱۳۹۸ اشتراک گذاری ارسال شده در 3 شهریور، ۱۳۹۸ سلام. سوال دوست دیگرمون هم بوده. کد زیر رو تست کنید. SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy, HH:mm:ss"); formatter.setLenient(false); String endTime = "25.06.2017, 15:05:36" Date endDate; try { endDate = formatter.parse(endTime); milliseconds = endDate.getTime(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } startTime = System.currentTimeMillis(); diff = milliseconds - startTime; mCountDownTimer = new CountDownTimer(milliseconds, 1000) { @Override public void onTick(long millisUntilFinished) { startTime=startTime-1; Long serverUptimeSeconds = (millisUntilFinished - startTime) / 1000; String daysLeft = String.format("%d", serverUptimeSeconds / 86400); txtViewDays.setText(daysLeft); String hoursLeft = String.format("%d", (serverUptimeSeconds % 86400) / 3600); txtViewHours.setText(hoursLeft); String minutesLeft = String.format("%d", ((serverUptimeSeconds % 86400) % 3600) / 60); txtViewMinutes.setText(minutesLeft); String secondsLeft = String.format("%d", ((serverUptimeSeconds % 86400) % 3600) % 60); txtViewSecond.setText(secondsLeft); } @Override public void onFinish() { } }.start(); } لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
سوال
Milad-Mohammadi 401
سلام دوستان
خسته نباشید
من دارم یه روزشمار میسازم. تقریبا همه چیش درست کار میکنه اما دوتا ایراد داره
1. توی محاسبه تعداد ماه ها درست عمل نمیکنه
2. پشت تعداد ماه ها منفی میاد با وجود اینکه من زمان آینده رو از گذشته کم میکنم
حس میکنم مشکل توی بخش ضرب و تقسیم روزها باشه!
examTime همون زمان آینده هست که روزشماری میشه تا اون. و به این صورت از بیرون داده میشه:
ممنون میشم راهنمایی کنید
لینک ارسال
به اشتراک گذاری در سایت های دیگر
2 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.