জাভাস্ক্রিপ্ট তারিখ তারিখের সময়


99

স্ট্যাকওভারফ্লোতে অন্য একটি উত্তর থেকে জাভাস্ক্রিপ্ট তারিখ থেকে। নেট ডেটটাইমে রূপান্তর:

long msSinceEpoch = 1260402952906; // Value from Date.getTime() in JavaScript
return new DateTime(1970, 1, 1) + new TimeSpan(msSinceEpoch * 10000);

তবে কীভাবে বিপরীত করবেন? জাভাস্ক্রিপ্ট তারিখের তারিখটাইম?


স্পষ্টতই অ্যাজাক্স সম্পর্কিত এই জাতীয় প্রশ্নগুলিতে আপনি কোথায় রূপান্তর করছেন তা নির্দিষ্ট করে দেওয়া উচিত, এবং জেএসএন-তে তারিখ সিরিয়ালকরণের কোনও মান নেই এবং আপনি এমএস ডেট মংগিংয়ের সাথে যেমন ডিল করছেন তা সম্ভবত বিবেচনা করা উচিত / তারিখ (02020202) ) / পাশাপাশি এটি পরিষ্কার করার বিষয়টি নিশ্চিত হন। শুভকামনা
স্কাই স্যান্ডার্স

4
আপনি যে উত্তরটি উল্লেখ করছেন
সেটিকে

উত্তর:


118

চেষ্টা করুন:

return DateTime.Now.Subtract(new DateTime(1970, 1,1)).TotalMilliseconds

সম্পাদনা করুন: সত্যিকারের ইউটিসি আরও ভাল তবে তারপরে আমাদের ধারাবাহিক হওয়া দরকার

return DateTime.UtcNow
               .Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc))
               .TotalMilliseconds;

যদিও, দ্বিতীয় চিন্তায় এটি কোনও বিষয় নয়, যতক্ষণ না উভয় তারিখ একই সময় অঞ্চলে থাকে।


4
আপনি ডেটটাইম-এর পরিবর্তে ডেটটাইম ব্যবহার করতে চাইতে পারেন Nএখন
ম্যাট ডিয়ারিং

4
আপনার দ্বিতীয় মতামত সম্পর্কে: দিবালোকের সময় বাঁচানোর সময় বা পরিবর্তনের সময় পরিবর্তনের সময় এটি গুরুত্বপূর্ণ (কোনটি মনে রাখতে আমি সর্বদা সত্যই কঠিন চিন্তা করতে হবে)। স্থানান্তরের সময় 2:00 থেকে 3:00 ঘন্টা দুবার পুনরাবৃত্তি হয়। এর অর্থ এই যে এক ঘন্টার মধ্যে জাভাস্ক্রিপ্টের তারিখটি এক ঘন্টা বন্ধ হয়ে যাবে। ইউটিসির ডিএলএস নেই তাই এটিতে সমস্যা নেই।
সেবাস্তিয়ান এম

আমার এখানে একই কোড রয়েছে তবে এটি জাভাস্ক্রিপ্টের তারিখের 5:30 পার্থক্য করে যখন সি # তারিখটি ঠিক কাজ করে।
জেনিশ জিনজুওয়াদিয়া

45

জাভাস্ক্রিপ্ট তারিখ নির্মাতা ইউনিক্স যুগের আগে থেকে 1 মিলি সেকেন্ড গ্রহণ করে (1 জানুয়ারি 1970 00:00:00 ইউটিসি)। এখানে সি # এক্সটেনশান পদ্ধতি যা নেট। ডেটটাইম অবজেক্টটিকে জাভাস্ক্রিপ্টের তারিখে রূপান্তর করে:

public static class DateTimeJavaScript
{
   private static readonly long DatetimeMinTimeTicks =
      (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Ticks;

   public static long ToJavaScriptMilliseconds(this DateTime dt)
   {
      return (long)((dt.ToUniversalTime().Ticks - DatetimeMinTimeTicks) / 10000);
   }
}

জাভাস্ক্রিপ্ট ব্যবহার:

var dt = new Date(<%= DateTime.Today.ToJavaScriptMilliseconds() %>);
alert(dt);

সি # ব্যবহারের দীর্ঘ তারিখ = তারিখটাইমজাভা স্ক্রিপ্ট.টোজাভা স্ক্রিপ্টমিলিসেকেন্ডস (তারিখের সময়); জাভাস্ক্রিপ্ট চেক ইন করুন (গুগল ক্রোমে F12 টিপুন এবং কনসোলে যান) var তারিখ = নতুন তারিখ (দীর্ঘ); কনসোল.লগ (তারিখ.টোস্ট্রিং ());
Gonen09

25

আপনি আপনার ক্রিয়াতে এটি ব্যবহার করতে পারেন:

return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");

এবং এটি আপনার আজাক্স সাফল্যে:

success: function (resultDateString) {
    var date = new Date(resultDateString);
}

বা এটি আপনার দৃষ্টিতে: (জাভাস্ক্রিপ্ট প্লাস সি #)

var date = new Date('@DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")');

4
সহজ এবং দ্রুত বুঝতে পারা
FindUutIslamNow

আমার জন্য সেরা উত্তর
নাভিদ

23

সঙ্গে Moment.js কেবল ব্যবহার করুন:

var jsDate = moment(netDateTime).toDate();

যেখানে netDateTimeআপনার ডেটটাইম ভেরিয়েবল সিরিয়ালাইজড, এমন কিছু "/Date(1456956000000+0200)/"


শুধু জাভাস্ক্রিপ্ট নির্মাণকারী কেন নয় new Date(netDateTime)?
কামিল


4

আমি জানি যে এটি একটু দেরি হয়েছে, তবে আপনি টাইমজোন স্বাধীন হতে চাইলে তারিখগুলি পরিচালনা করার জন্য আমার সমাধানটি এখানে নিয়ে আসতে হয়েছিল। মূলত এটিতে ইউটিসিতে রূপান্তর জড়িত।

জাভাস্ক্রিপ্ট থেকে সার্ভারে :

টাইমজোন অফসেটটি সরানোর সাথে সাথে যুগের মান হিসাবে তারিখগুলি প্রেরণ করুন।

var d = new Date(2015,0,1) // Jan 1, 2015
// Ajax Request to server ...
$.ajax({
  url: '/target',
  params: { date: d.getTime() - (d.getTimezoneOffset() * 60 * 1000) }
});

সার্ভারটি 1420070400000 তারিখের পূর্বে হিসাবে গ্রহণ করে।

সার্ভারে, সেই যুগের মানটিকে একটি ডেটটাইম অবজেক্টে রূপান্তর করুন:

DateTime d = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(epoch);

এই মুহুর্তে তারিখটি কেবলমাত্র তারিখ / সময় হিসাবে ব্যবহারকারীরা সরবরাহ করেছিল is কার্যকরভাবে এটি ইউটিসি।

অন্য পথে যাচ্ছি :

সার্ভার যখন ইউটিসি-তে সম্ভবত ডাটাবেস থেকে ডেটা টেনে নেয়, তখন একটি মহাকাব্য হিসাবে পার্থক্য পান (উভয় তারিখের অবজেক্ট স্থানীয় বা ইউটিসি হয় তা নিশ্চিত করে):

long ms = (long)utcDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;

বা

long ms = (long)localDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local)).TotalMilliseconds;

জাভাস্ক্রিপ্টটি যখন এই মানটি গ্রহণ করে, একটি নতুন তারিখের অবজেক্ট তৈরি করুন। তবে, এই তারিখের অবজেক্টটি স্থানীয় সময় ধরে নেওয়া হবে, সুতরাং আপনার বর্তমান টাইমজোন দ্বারা এটি অফসেট করা দরকার:

var epochValue = 1420070400000 // value pulled from server.
var utcDateVal = new Date(epochValue);
var actualDate = new Date(utcDateVal.getTime() + (utcDateVal.getTimezoneOffset() * 60 * 1000))

console.log(utcDateVal); // Wed Dec 31 2014 19:00:00 GMT-0500 (Eastern Standard Time)
console.log(actualDate); // Thu Jan 01 2015 00:00:00 GMT-0500 (Eastern Standard Time)

আমি যতদূর জানি, এটি এমন যে কোনও সময় অঞ্চলের জন্য কাজ করা উচিত যেখানে আপনাকে টাইমজোন থেকে স্বতন্ত্র তারিখগুলি প্রদর্শন করতে হবে।


3

এই পদ্ধতিটি আমার পক্ষে কাজ করছে:

   public sCdateToJsDate(cSDate: any): Date {
        // cSDate is '2017-01-24T14:14:55.807'
        var datestr = cSDate.toString();
        var dateAr = datestr.split('-');
        var year = parseInt(dateAr[0]);
        var month = parseInt(dateAr[1])-1;
        var day = parseInt(dateAr[2].substring(0, dateAr[2].indexOf("T")));
        var timestring = dateAr[2].substring(dateAr[2].indexOf("T") + 1);
        var timeAr = timestring.split(":");
        var hour = parseInt(timeAr[0]);
        var min = parseInt(timeAr[1]);
        var sek = parseInt(timeAr[2]);
        var date = new Date(year, month, day, hour, min, sek, 0);
        return date;
    }

1

আপনি রেজারের সাথে এমভিসি ব্যবহার করেন

----- রেজার / সি #

var dt1 = DateTime.Now.AddDays(14).Date;
    var dt2 = DateTime.Now.AddDays(18).Date;

    var lstDateTime = new List<DateTime>();
    lstDateTime.Add(dt1);
    lstDateTime.Add(dt2);

--- জাভাস্ক্রিপ্ট

$(function() {

            var arr = []; //javascript array

            @foreach (var item in lstDateTime)
             {
                @:arr1.push(new Date(@item.Year, @(item.Month - 1), @item.Day));
             }
  • 1: সি # তে তালিকা তৈরি করুন এবং এটি পূরণ করুন
  • 2: জাভাস্ক্রিপ্টে একটি অ্যারে তৈরি করুন
  • 3: তালিকাটি পুনরাবৃত্তি করতে রেজার ব্যবহার করুন
  • 4: জেএসে ফিরে যেতে @: এবং সি # তে স্যুইচ করতে @ ব্যবহার করুন
  • 5: মাসে -1 জেএসে মাসের নম্বর সংশোধন করতে।

শুভকামনা


0
<input type="hidden" id="CDate" value="<%=DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")%>" />

তারিখটি জেএস তারিখে রূপান্তর করতে (সমস্ত সংখ্যা):

var JSDate = $("#CDate").val();
JSDate = Date.parse(JSDate);

0

আর একটি দেরি উত্তর, তবে এটি এখানে অনুপস্থিত। আপনি যদি /Date(1425408717000)/জাভাস্ক্রিপ্টে সিরিয়ালযুক্ত রূপান্তরটি পরিচালনা করতে চান তবে আপনি কেবল কল করতে পারেন:

var cSharpDate = "/Date(1425408717000)/"
var jsDate = new Date(parseInt(cSharpDate.replace(/[^0-9 +]/g, '')));

সূত্র: আমিরসাহিব


এটি একটি উত্তর কিন্তু, ইয়াক। আমি এটি সুপারিশ না। দুটি হ্যাক একটি অধিকার না। এবং মাইক্রোসফ্ট এর সিরিয়ালাইজেশন একটি বিরক্তিকর হ্যাক।
সানকাট 2000

4
@ সানক্যাট 2000 কিভাবে এই হ্যাক? আপনি যদি সার্ভার থেকে ফ্রন্ট-এন্ডে মান পুনরুদ্ধারের জন্য কোনও পরিষেবা ব্যবহার করছেন তবে এর চেয়ে ভাল বিকল্প আমি জানি না। এটি এই পৃষ্ঠায় সমস্যার সবচেয়ে পরিষ্কার সমাধান solution আপনি যদি আরও ভাল বিকল্প সম্পর্কে জানেন তবে আমাদের উদাহরণ দেখানোর জন্য যত্নশীল?
Kajbo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.