آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تبدیل یک تاریخ به میلی ثانیه در جاوا و c# متفاوت است.

نیکناز  11 سال پیش  11 سال پیش
0 0

سلام دوستان

من کد زیر و  تو جاوا مینویسم عدد 1406489400000 و تو c# مینویسم عدد 1406505600000  می گیرم چرا؟

 c# :
            DateTime date = Convert.ToDateTime("2014 / 07 / 28");
            DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
            double Millis = (double)((date - origin).TotalMilliseconds);
java:
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            Date mdate=sdf.parse("2014 / 07 / 28");
            double Millis= mdate.getTime();	
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
محمد حسین زاده  11 سال پیش
+7 0

چون مبدا زمان متفاوت محاسبه میشه

System.currentTimeMillis زمان رو از تاریخ اول ژانویه 1970 محاسبه میکنه در حالیکه دات نت مبدا محاسبه رو مبدا تاریخ قرار میده

public DateTime ConvertJavaMiliSecondToDateTime(long javaMS)
{

DateTime UTCBaseTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

DateTime dt = UTCBaseTime.Add(new TimeSpan(javaMS * TimeSpan.TicksPerMillisecond)).ToLocalTime();

return dt;

}

از کد هم معلومه که زمان جاوا رو باید به تاریخ پایه اضافه کنی تا نتیجه یکسانی داشته باشی

اما مشکل شما : محاسبه دات نت بر اساس UTC هستش - جاوا هم به همین صورته؟

برای محاسبه جاوا بر اساس UTC میتونی از این کد کمک بگیری :

SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = isoFormat.parse("2010-05-23T09:01:02");

 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .