আমি কীভাবে একটি মাইক্রোসফ্ট জেএসএন তারিখ ফর্ম্যাট করব?


1998

আমি আমার প্রথম ক্র্যাক গ্রহণ করছি আয়াক্স jQuery সঙ্গে। আমি আমার পৃষ্ঠায় আমার ডেটা পাচ্ছি, তবে তারিখের ডেটা ধরণের জন্য ফিরে আসা জেএসওএন ডেটা নিয়ে আমার কিছুটা সমস্যা হচ্ছে। মূলত, আমি একটি স্ট্রিং ফিরে পাচ্ছি যা এরকম দেখাচ্ছে:

/Date(1224043200000)/

জেএসএনে একেবারে নতুনের কাছ থেকে - আমি কীভাবে এটি একটি স্বল্প তারিখের ফর্ম্যাটে ফর্ম্যাট করব? এটি কি কোথাও jQuery কোড পরিচালনা করা উচিত? আমি কোনও সাফল্য ছাড়াই jQuery.UI.datepickerপ্লাগিন ব্যবহার করে দেখেছি $.datepicker.formatDate()

এফওয়াইআই: এখানে সমাধানগুলির উত্তরগুলির সংমিশ্রণটি ব্যবহার করে আমি এনেছি:

function getMismatch(id) {
  $.getJSON("Main.aspx?Callback=GetMismatch",
    { MismatchId: id },

    function (result) {
      $("#AuthMerchId").text(result.AuthorizationMerchantId);
      $("#SttlMerchId").text(result.SettlementMerchantId);
      $("#CreateDate").text(formatJSONDate(Date(result.AppendDts)));
      $("#ExpireDate").text(formatJSONDate(Date(result.ExpiresDts)));
      $("#LastUpdate").text(formatJSONDate(Date(result.LastUpdateDts)));
      $("#LastUpdatedBy").text(result.LastUpdateNt);
      $("#ProcessIn").text(result.ProcessIn);
    }
  );

  return false;
}

function formatJSONDate(jsonDate) {
  var newDate = dateFormat(jsonDate, "mm/dd/yyyy");
  return newDate;
}

এই সমাধানটি কলব্যাক পদ্ধতি থেকে আমার অবজেক্টটি পেয়েছে এবং তারিখের বিন্যাসের লাইব্রেরিটি ব্যবহার করে সঠিকভাবে পৃষ্ঠাতে তারিখগুলি প্রদর্শন করে।


26
এটি আকর্ষণীয় হতে পারে: hanselman.com/blog/…
সিট্রোনাস

6
/ তারিখ(...)/ ফর্ম্যাটটি মাইক্রোসফ্টের অন্তর্নির্মিত জেএসওএন তারিখ বিন্যাসের সাথে সুনির্দিষ্ট - এটি কোনও মানের অংশ নয়, এবং জাভাস্ক্রিপ্ট থেকে আসা জেএসওনের একটি মান রয়েছে: আইএসও ফর্ম্যাট জাভাস্ক্রিপ্ট নির্দিষ্ট করে: স্ট্যাকওভারফ্লো.com / a / 15952652/176877 সুতরাং, এই প্রশ্নটি মাইক্রোসফ্টের জেএসএন তারিখ বিন্যাসের সাথে নির্দিষ্ট। এটি স্পষ্ট করার জন্য আমি শিরোনামটি সংশোধন করেছি।
ক্রিস মোসচিনি

15
তুমি মজা করছ! মাইক্রোসফ্ট তাদের নিজস্ব স্পিন জেএসএনে স্ট্যাম্প করেছে! এবং তারিখে !! তারা কখন শিখবে!
নিক.এমসিডার্মাইড

.NET দিকে নিউটোনসট জেএসএন ব্যবহার করুন এবং জেএস সাইডে ভাল টাইপ করা মানগুলি পেতে কেবল ব্যবহার করুন: github.com/RickStrahl/json.date-exferences
bahi

আপনি JSON এর পরিবর্তে JSON ++ ব্যবহার করতে পারেন। জেএসএন ++ জেএসএনের তুলনায় একই তবে জাভাস্ক্রিপ্টের মতো সমর্থনগুলির ক্ষেত্রে Date
চমত্কার

উত্তর:


1688

eval()প্রয়োজন হয় না. এটি ভাল কাজ করবে:

var date = new Date(parseInt(jsonDate.substr(6)));

substr()ফাংশন লাগে /Date(অংশ, এবং parseInt()ফাংশন পূর্ণসংখ্যা পায় এবং উপেক্ষা করে )/শেষে। ফলস্বরূপ সংখ্যাটি Dateকনস্ট্রাক্টরে পাস করা হয় ।


আমি ইচ্ছাকৃতভাবে মূল চিকিত্সা (দ্বিতীয় তর্ক parseInt) ত্যাগ করেছি ; দেখতে নীচের আমার মন্তব্য

এছাড়াও, আমি ররির মন্তব্যের সাথে পুরোপুরি একমত : আইএসও -8601 তারিখগুলি এই পুরানো ফর্ম্যাটের চেয়ে বেশি পছন্দ করা হয় - সুতরাং এই বিন্যাসটি সাধারণত নতুন বিকাশের জন্য ব্যবহার করা উচিত নয়। আইএসও -8601 ফর্ম্যাট ব্যবহার করে তারিখগুলি সিরিয়ালাইজ করে এমন দুর্দান্ত বিকল্পের জন্য দুর্দান্ত জসন.এনইটি লাইব্রেরি দেখুন ।

ISO-8601 ফর্ম্যাটেড JSON তারিখগুলির জন্য, কেবল স্ট্রিংটি Dateকনস্ট্রাক্টারে পাস করুন :

var date = new Date(jsonDate); //no ugly parsing needed; full timezone support

4
@ ব্রোম: এমএস ফর্ম্যাট পরিবর্তন করলে উভয় পদ্ধতিই (প্রতিস্থাপন ফাংশন এবং এই উত্তর) পরিবর্তন করতে হবে।
রায় টিঙ্কার

23
আপনি কি দয়া করে এটির রেডিক্স var তারিখ = নতুন তারিখ (parseInt (jsonDate.substr (6), 10%)) দিয়ে আপডেট করতে পারবেন;
জেমস কিবুরজ

6
@ জেমসকাইবার্জ: প্রতিটি নিয়মের ব্যতিক্রম রয়েছে এবং আমি মনে করি এটি ব্যতিক্রম হলে প্রয়োগ হয়। .NET এর জেএসওএন তারিখের নম্বরগুলিতে কখনই শীর্ষস্থানীয় "0" থাকে না, তাই আমরা নিরাপদে র‌্যাডিক্সটি বাইরে রাখতে পারি।
রায় টিঙ্কার

22
এটি উল্লেখ করার মতো বিষয় যে এই তারিখের ফর্ম্যাটটি বেশ খারাপ এবং সাধারণ পদক্ষেপটি JSON- এ ISO-8601 ফর্ম্যাটেড তারিখগুলিতে। Hanselman.com/blog/…
ররি

4
এই পদ্ধতির সময় অঞ্চল বিবেচনা করতে ব্যর্থ হয় তাই আপনার সার্ভার এবং ব্যবহারকারীরা বিভিন্ন সময় অঞ্চলগুলিতে থাকলে গুরুতর সমস্যা দেখা দিতে পারে। আমি নীচে একটি উত্তর পোস্ট করেছি যা ডাব্লুসিএফ এবং জাভাস্ক্রিপ্ট পক্ষের সাথে এটির মোকাবিলার খুব দ্রুত এবং সহজ উপায়টি ব্যাখ্যা করেছে
স্কট উইলেক

135

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

var date = eval(jsonDate.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));

এবং তারপরে আপনি এটি চান তা প্রদর্শনের জন্য আপনি একটি জাভাস্ক্রিপ্ট তারিখ ফর্ম্যাট স্ক্রিপ্ট (যখন 1.2 মিনিট ও মিন্ফিড করা হবে) ব্যবহার করতে পারেন।


7
লাইনটিতে কোনও ভুল নেই, ক্রমটি \ //। প্রথম স্ল্যাশ পালানো হয়েছে যাতে এটি কোনও মন্তব্যের মতো গণনা করে না। এটি আপনার সম্পাদক আপনাকে চালনা করছে, লাইনটি ঠিক কাজ করবে।
andreialecu

152
@ আরবল, আজেবাজে কথা:jsonDate = new Date(+jsonDate.replace(/\/Date\((\d+)\)\//, '$1'));
চোখের পলকহীনতা

39
পিএসটি সঠিক ছিল, 'ইওল' না করে বিভিন্ন উপায়ে এটি করা সম্ভব। ক্রকফোর্ড বলেছেন যে 'ইওল ইজ এভিল' কারণ এটি কম পাঠযোগ্য এবং কম সুরক্ষিত, তাছাড়া তিনি আরও বোঝাতে পারেন যে এটি কম দক্ষ এবং আরও বিপজ্জনক কারণ এটি জাভাস্ক্রিপ্ট সংকলককে আঘাত করে।
মার্ক রজার্স

13
@ এডি: new Functionপ্রায় হিসাবে খারাপ eval: ডিভোপেরা.আর্টিক্যালস
মার্সেল করপেল

5
@ এডি: এটি ওভালের আরও একটি রূপ, এবং ঠিক 'দুষ্ট'। পরিবর্তে স্ট্রিংটি পার্স করুন (নীচে আমার উত্তর দেখুন)
রায় টিঙ্কার

98

যারা নিউটনসফট জসন.এনইটি ব্যবহার করেন তাদের জন্য , কীভাবে এটি করতে পারবেন IE8, ফায়ারফক্স ৩.৫ প্লাস জাসন.এনইটি- তে নেটিভ জেএসওএন এর মাধ্যমে কীভাবে করবেন

এছাড়াও জসন.এনইটি দ্বারা রচিত তারিখের ফর্ম্যাট পরিবর্তন করার জন্য ডকুমেন্টেশনটি দরকারী: জেসন.এনইটের সাথে তারিখগুলি সিরিয়ালিং করা

যারা খুব অলস তাদের জন্য এখানে দ্রুত পদক্ষেপ দেওয়া হল। যেহেতু জেএসএনের একটি শিথিল ডেটটাইম বাস্তবায়ন রয়েছে, আপনার এটি ব্যবহার করা দরকার IsoDateTimeConverter()। মনে রাখবেন যে Json.NET 4.5 থেকে ডিফল্ট তারিখের ফর্ম্যাটটি আইএসও তাই নীচের কোডটির প্রয়োজন হয় না।

string jsonText = JsonConvert.SerializeObject(p, new IsoDateTimeConverter());

জেএসওএন এর মাধ্যমে আসবে

"fieldName": "2009-04-12T20:44:55"

অবশেষে, কিছু জাভাস্ক্রিপ্ট আইএসও তারিখটিকে একটি জাভাস্ক্রিপ্ট তারিখে রূপান্তর করতে:

function isoDateReviver(value) {
  if (typeof value === 'string') {
    var a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)(?:([\+-])(\d{2})\:(\d{2}))?Z?$/.exec(value);
      if (a) {
        var utcMilliseconds = Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]);
        return new Date(utcMilliseconds);
      }
  }
  return value;
}

আমি এটি এটি ব্যবহার করে

$("<span />").text(isoDateReviver(item.fieldName).toLocaleString()).appendTo("#" + divName);

6
জাভাস্ক্রিপ্ট তারিখ নির্মাতা আপনার জন্য স্ট্রিংটিকে পার্স করতে পারে:new Date("2009-04-12T20:44:55")
ডেভিড হগ

5
সতর্কতা - তারিখ () কনস্ট্রাক্টর ফর্ম্যাটগুলি এবং পার্সিং ইসমাস্ক্রিপ্ট non এর আগে মানহীন example উদাহরণস্বরূপ, আই 9 9 আপনি নির্ধারককে স্থানীয় সময় হিসাবে যে তারিখটি দিচ্ছেন IS0-8601 এ রয়েছে যা অন্য কোথাও ইউসিটি হিসাবে অন্তর্ভুক্ত tre আপনি যদি পুরানো ব্রাউজারগুলি সমর্থন করেন তবে তারিখ নির্মাতার উপর নির্ভর করবেন না। codeofmatt.com/2013/06/07/…
ড্যানো

ইউটিসি-র বিহীন তারিখ পাঠানো শীঘ্রই বা পরে আপনাকে সমস্যার মধ্যে ফেলবে।
tymtam

এখানে পার্টিতে কিছুটা দেরি হয়েছে তবে কী হবে (+ এ [১], + এ [২] - ১, + এ [৩], + এ [৪], + এ [৫], + এ []]) ; এই প্রসঙ্গে প্রতিনিধিত্ব?
ইয়ানান্ত

@ আয়ানন্ত - +a[1]ইত্যাদি রেজেক্সের অ্যারের টুকরোগুলি উপস্থাপন করে এবং এটি +এটি একটি সংখ্যায় ফেলে দেবে, তাই +a[1]সমান 2009ইত্যাদি Here এখানে অ্যারে বিচ্ছিন্নতা রয়েছে: 0: "2009-04-12T20:44:55" 1: "2009" 2: "04" 3: "12" 4: "20" 5: "44" 6: "55"
জেসন জং ২

67

আসল উদাহরণ:

/Date(1224043200000)/  

অন্তর্নির্মিত জেএসওএন সিরিয়ালাইজেশন ব্যবহার করে ডাব্লুসিএফ আরএসটি-র মাধ্যমে তারিখ প্রেরণের সময় ডাব্লুসিএফ দ্বারা ব্যবহৃত ফর্ম্যাটিংটি প্রতিফলিত করে না। (কমপক্ষে .NET 3.5, SP1 এ)

আমি উত্তরটি এখানে সহায়কটি পেয়েছি, তবে রেজেেক্সে সামান্য সম্পাদনা প্রয়োজন, কারণ দেখা যাচ্ছে যে ডাব্লুসিএফ জেএসএন-তে টাইমজোন জিএমটি অফসেটটি ফিরে আসা সংখ্যায় (১৯ 1970০ সাল থেকে) যুক্ত করা হচ্ছে।

ডাব্লুসিএফ পরিষেবাদিতে আমার রয়েছে:

[OperationContract]
[WebInvoke(
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.WrappedRequest
    )]
ApptVisitLinkInfo GetCurrentLinkInfo( int appointmentsId );

ApptVisitLinkInfo কেবল সংজ্ঞায়িত করা হয়:

public class ApptVisitLinkInfo {
    string Field1 { get; set; }
    DateTime Field2 { get; set; }
    ...
}

পরিষেবাটি থেকে "ফিল্ড 2" যখন জসন হিসাবে ফিরে আসে তখন মানটি হয়:

/Date(1224043200000-0600)/

মান অংশ হিসাবে অন্তর্ভুক্ত টাইমজোন অফসেট লক্ষ্য করুন।

পরিবর্তিত রেজেক্স:

/\/Date\((.*?)\)\//gi

এটি কিছুটা বেশি আগ্রহী এবং প্যারেনগুলির মধ্যে সমস্ত কিছু ধরে ফেলে কেবল প্রথম সংখ্যাটি নয়। ফলস্বরূপ সময় ডুবে যায় 1970, এবং টাইমজোন অফসেট সমস্ত তারিখের অবজেক্ট পেতে ইওলকে খাওয়ানো যেতে পারে।

প্রতিস্থাপনের জন্য জাভাস্ক্রিপ্টের ফলস্বরূপ লাইনটি হ'ল:

replace(/\/Date\((.*?)\)\//gi, "new Date($1)");

10
এটি ভুল, নতুন তারিখ (1224043200000-0600) কেবল তারিখ থেকে 600 কে বিয়োগ করবে, এক্ষেত্রে 600 মিলিসেকেন্ড, 6 ঘন্টা উচিত নয় it
এরিয়েল


আমি মনে করি টাইমজোন অফসেট কেবল তখনই অন্তর্ভুক্ত থাকে যখন আপনার কাছে .NET (যা ডিফল্ট আচরণ) ডেটটাইম অবজেক্টে টাইমজোন থাকে। যদি আপনার তারিখটি ইউটিসি-তে থাকে তবে ডেটটাইম.স্পেসিফাইকিন্ড (তারিখ, তারিখটাইমকাইন্ড.ইউটিসি) ব্যবহার করুন এবং কোনও অফসেট ছাড়াই সিরিয়ালটি বের হওয়ার সময় আপনি যথাযথ ইউটিসি মান পাবেন যা আপনি প্রয়োজন অনুসারে ব্যবহারকারীর টাইমজোনটিতে ফিরে রূপান্তর করতে পারবেন। যদি এটি স্থানীয় সময়ে থাকে তবে .ToUniversalTime () ব্যবহার করুন এবং এটি ইউটিসিতে রূপান্তরিত হবে এবং আপনার জন্য ইতিমধ্যে "Kind" নির্দিষ্ট করে রেখেছে।
jvenema

জাভাস্ক্রিপ্ট -0100 একটি বাইনারি স্ট্রিং তাই যত্নশীল হতে হবে!
ভারবেডার

একবার আপনি ডাব্লুসিএফ থেকে জেএসে রূপান্তরিত তারিখটি পেয়ে গেলে, কীভাবে বিপরীত হয়। আপনি একই ডাব্লুসিএফ পাস করতে চান যা পূর্ণসংখ্যা হিসাবে তারিখ (তারিখ.সেটটাইম () ব্যবহার করে) হবে?
নিতিনসিংহ

65

নিজেকে পুনরাবৃত্তি করবেন না - ব্যবহার করে তারিখ রূপান্তর স্বয়ংক্রিয় করুন $.parseJSON()

আপনার পোস্টের উত্তরগুলি জাভাস্ক্রিপ্টের তারিখগুলিতে ম্যানুয়াল তারিখ রূপান্তর সরবরাহ করে। আমি jQuery এর $.parseJSON()সামান্য খানিকটা প্রসারিত করেছি , সুতরাং আপনি যখন এটির নির্দেশ দেন তখন তা স্বয়ংক্রিয়ভাবে তারিখগুলি পার্স করতে সক্ষম হয়। এটি ASP.NET ফর্ম্যাটেড তারিখগুলি ( /Date(12348721342)/) পাশাপাশি আইএসও ফর্ম্যাট করা তারিখগুলি ( 2010-01-01T12.34.56.789Z) যা ব্রাউজারগুলিতে নেটিভ JSON ফাংশন দ্বারা সমর্থিত হয় (এবং json2.js এর মতো লাইব্রেরি)।

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


61

আপনি যদি জাভাস্ক্রিপ্টে বলেন,

var thedate = new Date(1224043200000);
alert(thedate);

আপনি দেখতে পাবেন যে এটি সঠিক তারিখ, এবং আপনি যে কোনও ফ্রেমওয়ার্ক সহ জাভাস্ক্রিপ্ট কোডের যে কোনও জায়গায় এটি ব্যবহার করতে পারেন।


3
এটি শেষ হওয়ার ব্যতীত আমি খুব ভেবে দেখেছিলাম: var thedate = / তারিখ (1224043200000) /; কমপক্ষে আমার জন্য ...
3'8 এ rball 3'8

2
তারিখ () এবং তারিখ (1224043200000) উভয় ক্রোম এবং ফায়ারফক্সে একই ফলাফল দেয়। এটি পুরানো ব্রাউজারগুলিতে কাজ করে কিনা তা নিশ্চিত নন, তবে এই উত্তরটি এখন ব্রাউজারগুলিতে কাজ করে না।
জেমস

@ জেমস, হ্যাঁ এটি ব্রাউজারকে বর্তমান তারিখ দিচ্ছে। :(
ভিসু

9
আপনার এটি "নতুন তারিখ (1224043200000)" লিখতে হবে।
BrainSlugs83

60

ডেমো চেক করতে এখানে ক্লিক করুন

জাভাস্ক্রিপ্ট / jQuery এর

var = MyDate_String_Value = "/Date(1224043200000)/"
var value = new Date
            (
                 parseInt(MyDate_String_Value.replace(/(^.*\()|([+-].*$)/g, ''))
            );
var dat = value.getMonth() +
                         1 +
                       "/" +
           value.getDate() +
                       "/" +
       value.getFullYear();

ফলাফল - "10/15/2008"


উপরের পদ্ধতির জন্য কেবল একটি উন্নতি। ফাংশন formatearFecha (fec) {var মান = নতুন তারিখ (parseInt (fec.replace (/ (^। * () | ([+ -]। * $) / g, '')))); মেস = মান.getMonth (); var dia = value.getDate (); var তারিখ = ডায়া + "/" + মেস + "/" + মান .getFullYear (); যদি (dia <10) তারিখ = তারিখ.সুবস্ট্র (0, 0) + '0' + ডায়া + তারিখ.সুবস্ট্র (1); যদি (মেস <10) তারিখ = তারিখ.সুবস্ট্র (0, 3) + '0' + মেস + তারিখ.সুবস্ট্র (4); ফেরতের তারিখ;} তারিখ এতে রূপান্তরিত ddMMyyyy চিয়ার্স।
Matias

38

আপডেট করা হয়েছে

আমাদের একটি অভ্যন্তরীণ ইউআই লাইব্রেরি রয়েছে যা মাইক্রোসফ্টের এএসপি.এনইটি অন্তর্নির্মিত জেএসওএন ফর্ম্যাট, যেমন /Date(msecs)/এখানে মূলত সম্পর্কে জিজ্ঞাসা করতে হয়েছে, এবং জেএসওএন.এনইটিএস সহ বেশিরভাগ জেএসএনের ডেট ফর্ম্যাটকে মোকাবেলা করতে হবে 2014-06-22T00:00:00.0। এ ছাড়া 3 দশমিক জায়গা ছাড়াও আমাদের পুরানো অসমর্থতার সাথে মোকাবিলা করতে হবে

আমরা প্রথমে আমরা কী ধরণের তারিখ গ্রহণ করছি তা সনাক্ত করে এটি একটি সাধারণ জাভাস্ক্রিপ্টে পার্স করুন Date অবজেক্টে , তারপরে সেটিকে ফর্ম্যাট করুন।

1) মাইক্রোসফ্ট তারিখ ফর্ম্যাট সনাক্ত করুন

// Handling of Microsoft AJAX Dates, formatted like '/Date(01238329348239)/'
function looksLikeMSDate(s) {
    return /^\/Date\(/.test(s);
}

2) আইএসও তারিখের ফর্ম্যাটটি সনাক্ত করুন

var isoDateRegex = /^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(\.\d\d?\d?)?([\+-]\d\d:\d\d|Z)?$/;

function looksLikeIsoDate(s) {
    return isoDateRegex.test(s);
}

3) পার্স এমএস তারিখ বিন্যাস:

function parseMSDate(s) {
    // Jump forward past the /Date(, parseInt handles the rest
    return new Date(parseInt(s.substr(6)));
}

4) পার্সো আইএসও তারিখের ফর্ম্যাট।

আমাদের কাছে নিশ্চিত হওয়ার একটি উপায় রয়েছে যে আমরা সর্বদা তিন মিলি সেকেন্ডে স্থান পেতে স্ট্যান্ডার্ড আইএসও তারিখগুলি বা আইএসও তারিখগুলি সংশোধন করেছি ( উপরে দেখুন) ) , তাই পরিবেশের উপর নির্ভর করে কোডটি ভিন্ন।

4 ক) স্ট্যান্ডার্ড আইএসও তারিখের ফর্ম্যাটটি পার্স করুন, পুরানো ইস্যুগুলির সাথে মোকাবেলা করুন:

function parseIsoDate(s) {
    var m = isoDateRegex.exec(s);

    // Is this UTC, offset, or undefined? Treat undefined as UTC.
    if (m.length == 7 ||                // Just the y-m-dTh:m:s, no ms, no tz offset - assume UTC
        (m.length > 7 && (
            !m[7] ||                    // Array came back length 9 with undefined for 7 and 8
            m[7].charAt(0) != '.' ||    // ms portion, no tz offset, or no ms portion, Z
            !m[8] ||                    // ms portion, no tz offset
            m[8] == 'Z'))) {            // ms portion and Z
        // JavaScript's weirdo date handling expects just the months to be 0-based, as in 0-11, not 1-12 - the rest are as you expect in dates.
        var d = new Date(Date.UTC(m[1], m[2]-1, m[3], m[4], m[5], m[6]));
    } else {
        // local
        var d = new Date(m[1], m[2]-1, m[3], m[4], m[5], m[6]);
    }

    return d;
}

4 খ) স্থির তিন মিলিসেকেন্ড দশমিক স্থান সহ ISO ফর্ম্যাটটি পার্স করুন - আরও সহজ:

function parseIsoDate(s) {
    return new Date(s);
}

5) এটি ফর্ম্যাট করুন:

function hasTime(d) {
    return !!(d.getUTCHours() || d.getUTCMinutes() || d.getUTCSeconds());
}

function zeroFill(n) {
    if ((n + '').length == 1)
        return '0' + n;

    return n;
}

function formatDate(d) {
    if (hasTime(d)) {
        var s = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
        s += ' ' + d.getHours() + ':' + zeroFill(d.getMinutes()) + ':' + zeroFill(d.getSeconds());
    } else {
        var s = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
    }

    return s;
}

6) সব একসাথে টাই করুন:

function parseDate(s) {
    var d;
    if (looksLikeMSDate(s))
        d = parseMSDate(s);
    else if (looksLikeIsoDate(s))
        d = parseIsoDate(s);
    else
        return null;

    return formatDate(d);
}

নীচের পুরানো উত্তরটি এই তারিখের ফর্ম্যাটটিকে jQuery এর নিজস্ব JSON পার্সিংয়ে বেঁধে দেওয়ার জন্য দরকারী যাতে আপনি স্ট্রিংয়ের পরিবর্তে তারিখ অবজেক্টগুলি পান বা আপনি এখনও jQuery <1.5 তে আটকে থাকেন।

পুরানো উত্তর

আপনি যদি এএসপি.নেট এমভিসির সাথে jQuery 1.4 এর অ্যাজাক্স ফাংশনটি ব্যবহার করছেন তবে আপনি সমস্ত ডেটটাইম বৈশিষ্ট্যগুলি ডেট অবজেক্টে এগুলি দিয়ে পরিবর্তন করতে পারেন:

// Once
jQuery.parseJSON = function(d) {return eval('(' + d + ')');};

$.ajax({
    ...
    dataFilter: function(d) {
        return d.replace(/"\\\/(Date\(-?\d+\))\\\/"/g, 'new $1');
    },
    ...
});

JQuery 1.5 এ আপনি parseJSONআজাক্স কলটিতে রূপান্তরকারী বিকল্পটি ব্যবহার করে বিশ্বব্যাপী পদ্ধতিটি ওভাররাইড করা এড়াতে পারবেন ।

http://api.jquery.com/jQuery.ajax/

দুর্ভাগ্যক্রমে আপনাকে তারিখগুলি বিশ্বব্যাপী স্থানে স্থান বিশ্লেষণের জন্য পুরানো alভাল রুটে স্যুইচ করতে হবে - অন্যথায় আপনাকে এগুলি কেস-বাই-কেস ভিত্তিতে পোস্ট পার্সে রূপান্তর করতে হবে।


27

কোন তারিখ টাইপ সালে নির্মিত হয় তাদেরকে JSON । এটি কিছু যুগ থেকে সেকেন্ড / মিলিসেকেন্ডের সংখ্যার মতো দেখাচ্ছে। আপনি যদি যুগে যুগে পরিচিত হন তবে সঠিক সময় যোগ করে আপনি তারিখটি তৈরি করতে পারেন।


এটি ভুল, জেএসএন জাভাস্ক্রিপ্টের তারিখগুলি ব্যবহার করে টাইমজোন সম্পর্কিত যুক্ত তথ্য ব্যবহার করে - যুগটি জাভাস্ক্রিপ্ট তারিখ শ্রেণীর যুগের (স্পষ্ট কারণে) সমান।
BrainSlugs83

3
@ ব্রেইনস্লুগ ৩৩ - এই উত্তরটি দৃ the়তার জন্য একটি রেফারেন্স সরবরাহ করে যে জেএসএনের একটি বিল্ট-ইন তারিখের ধরণ নেই। আপনি যদি একমত না হন তবে দয়া করে একটি বিকল্প রেফারেন্স সরবরাহ করুন। (আপনি কোনও নির্দিষ্ট কাঠামোর কথা ভাবছেন না যা তারিখগুলি উপস্থাপনের জন্য স্ট্রিং ফর্ম্যাটে সিদ্ধান্ত নিয়েছে আপনি কী? এটি জেএসওএন স্ট্যান্ডার্ডের অংশ নয়, এটি এমনটি হতে পারে না কারণ এটি এমন স্ট্রিংকে অন্তর্ভুক্ত করা অসম্ভব করে তোলে যা এমন নয়) একটি তারিখ হিসাবে নেওয়া হবে বলে মনে করা হচ্ছে তবে তার সাথে অক্ষরের একটি সেট রয়েছে যা তারিখের সাথে মেলে))
nnnnnn

25

আমাকেও এই সমস্যার সমাধানের সন্ধান করতে হয়েছিল এবং শেষ পর্যন্ত আমি মুহুর্তে এসে পৌঁছলাম whichjs যা একটি দুর্দান্ত লাইব্রেরি যা এই তারিখের ফর্ম্যাট এবং আরও অনেকগুলি পার্স করতে পারে।

var d = moment(yourdatestring)

এটি আমার জন্য কিছু মাথা ব্যাথা বাঁচিয়েছে তাই আমি ভেবেছিলাম এটি আপনার সাথে ভাগ করে নিই। :)
আপনি এটি সম্পর্কে আরও কিছু তথ্য এখানে পেতে পারেন: http://momentjs.com/


24

ইনলাইন স্ক্রিপ্টে অবজেক্ট লেখার জন্য মাইক্রোসফ্ট সিরিয়ালাইজার দ্বারা উত্পাদিত চরিত্রগুলি থেকে মুক্তি পেতে আমি পানোর নিয়মিত অভিব্যক্তিতে "অক্ষরগুলি যুক্ত করেছিলাম:

সুতরাং আপনার যদি আপনার সি # কোড-এর পিছনে কোনও সম্পত্তি থাকে তবে এটির মতো

protected string JsonObject { get { return jsSerialiser.Serialize(_myObject); }}

এবং আপনার এসপ্সে

<script type="text/javascript">
    var myObject = '<%= JsonObject %>';
</script>

আপনি কিছু পেতে চাই

var myObject = '{"StartDate":"\/Date(1255131630400)\/"}';

ডাবল উদ্ধৃতি লক্ষ্য করুন।

এটিকে এমন একটি ফর্মের দিকে পেতে যাতে alভাল সঠিকভাবে ডিসরিয়ালাইজ হবে, আমি ব্যবহার করেছি:

myObject = myObject.replace(/"\/Date\((\d+)\)\/"/g, 'new Date($1)');

আমি প্রোটোটাইপ ব্যবহার করি এবং এটি ব্যবহার করতে আমি যুক্ত করেছি

String.prototype.evalJSONWithDates = function() {
    var jsonWithDates = this.replace(/"\/Date\((\d+)\)\/"/g, 'new Date($1)');
    return jsonWithDates.evalJSON(true);
}

22

JQuery 1.5 এ, যতক্ষণ না আপনার কাছে পুরানো ব্রাউজারগুলি কভার করার জন্য json2.js রয়েছে , আপনি নীচে অ্যাজাক্স থেকে আগত সমস্ত তারিখকে deserialize করতে পারেন:

(function () {
    var DATE_START = "/Date(";
    var DATE_START_LENGTH = DATE_START.length;

    function isDateString(x) {
        return typeof x === "string" && x.startsWith(DATE_START);
    }

    function deserializeDateString(dateString) {
        var dateOffsetByLocalTime = new Date(parseInt(dateString.substr(DATE_START_LENGTH)));
        var utcDate = new Date(dateOffsetByLocalTime.getTime() - dateOffsetByLocalTime.getTimezoneOffset() * 60 * 1000);
        return utcDate;
    }

    function convertJSONDates(key, value) {
      if (isDateString(value)) {
        return deserializeDateString(value);
      }
      return value;
    }

    window.jQuery.ajaxSetup({
      converters: {
        "text json": function(data) {
          return window.JSON.parse(data, convertJSONDates);
        }
      }
    });
}());

আমি যুক্তি অন্তর্ভুক্ত করেছি যা ধরে নিয়েছে যে আপনি সার্ভার থেকে সমস্ত তারিখগুলি ইউটিসি হিসাবে প্রেরণ করবেন (যা আপনার উচিত); এর পরে গ্রাহক একটি জাভাস্ক্রিপ্ট Dateঅবজেক্ট পাবেন যার যথাযথ টিক্স মান রয়েছে এটি প্রতিফলিত করতে। অর্থাৎ, তারিখটিতে কল করা getUTCHours()ইত্যাদি সার্ভারে যেমন মূল্য পেয়েছিল তেমন ফিরিয়ে দেবে, এবং কল getHours()করা তাদের ব্রাউজারের দ্বারা নির্ধারিত অনুসারে ব্যবহারকারীর স্থানীয় সময় অঞ্চলে মানটি ফিরিয়ে দেবে।

এটি টাইমজোন অফসেটগুলির সাথে ডাব্লুসিএফ ফর্ম্যাটটিকে বিবেচনা করে না , যদিও এটি যুক্ত করা তুলনামূলকভাবে সহজ।


ঠিক যেমন একটি নোট: কোডটি কাজ করার জন্য আপনাকে স্ট্রিং টাইপের স্টার্টওয়াট পদ্ধতিটি তৈরি করতে হবে
হুগো

21

JQuery UI ডেটপিকার ব্যবহার করে - আপনি যদি ইতিমধ্যে jQuery UI অন্তর্ভুক্ত করেন তবে সত্যই তা বোধগম্য হয়:

$.datepicker.formatDate('MM d, yy', new Date(parseInt('/Date(1224043200000)/'.substr(6)))); 

আউটপুট:

15 ই অক্টোবর, 2008


20

এটাকে বেশি ভাবেন না। যেমন আমরা কয়েক দশক ধরে করেছি, এই যুগের পর থেকে ১ জানুয়ারি মধ্যরাতের জিএমটি / ইউটিসি / সি সি এর ডি-ফ্যাক্টো স্ট্যান্ডার্ড পর্ব থেকে একটি সংখ্যক অফসেট পাস করুন। জাভাস্ক্রিপ্ট এটি পছন্দ করে, জাভা এটি পছন্দ করে, সি এটি পছন্দ করে এবং ইন্টারনেট এটি পছন্দ করে।


2
এবং খুব খারাপ 20 টিরও বেশি যুগ থেকে বেছে নেওয়া হয়েছে।
en.wikedia.org/wiki/Epoch_(references_date


18

এই উত্তরগুলির প্রত্যেকেরই একটি জিনিস মিল রয়েছে: এগুলি সমস্ত একক মানের (সাধারণত একটি স্ট্রিং) হিসাবে তারিখ সঞ্চয় করে।

আর একটি বিকল্প হ'ল জেএসএনের অন্তর্নিহিত কাঠামোর সুবিধা নেওয়া এবং সংখ্যার তালিকা হিসাবে একটি তারিখ উপস্থাপন:

{ "name":"Nick",
  "birthdate":[1968,6,9] }

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

এখানে বাক্সের বাইরে কেবল ভাবছেন - একটি JSON তারিখ স্ট্রিং হিসাবে সংরক্ষণ করতে হবে না।

এইভাবে এটি করার জন্য আরেকটি বোনাস হ'ল আপনি সহজে (এবং দক্ষতার সাথে) কাউচডিবি যেভাবে অ্যারে মানগুলিতে প্রশ্নগুলি পরিচালনা করেন তার উপকারের মাধ্যমে কোনও নির্দিষ্ট বছর বা মাসের জন্য সমস্ত রেকর্ড নির্বাচন করতে পারেন ।


সেখানে হয় তাদেরকে JSON, যা বোঝায় যা RFC 3339 ফরম্যাট তারিখ একটি আদর্শ বিন্যাস।
gnasher729

@ জেনার, এটি দুর্দান্ত লাগবে তবে তা নয়। আরএফসি 7159 থেকে 3339 বা বিপরীতে কোনও রেফারেন্স নেই। কোনও জুরি স্ট্যান্ডার্ড JSON তারিখের ফর্ম্যাট নেই। যা কিছু বাকি রয়েছে তা হ'ল বাস্তব মানদণ্ড, যার প্রত্যেকটির পক্ষে ভাল / বিপরীত রয়েছে। এটি স্ট্যান্ডার্ড সম্পর্কে দুর্দান্ত জিনিস।
মার্ক এল।

17

দুর্দান্ত থ্রেডে পোস্ট করা:

var d = new Date(parseInt('/Date(1224043200000)/'.slice(6, -2)));
alert('' + (1 + d.getMonth()) + '/' + d.getDate() + '/' + d.getFullYear().toString().slice(-2));

1
দুর্দান্ত ধারণা, তবে যদি কোনও টাইমজোন অফসেট অন্তর্ভুক্ত থাকে? স্লাইস (6, -2) এর পরিবর্তে সাবস্ট্রাস্ট (6) ব্যবহার করা ভাল - আমার উত্তরটি নীচে দেখুন।
রায় টিঙ্কার

17

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

ডাব্লুসিএফ /। নেট এ:

যেখানে ক্রিয়েশনডেটটি একটি সিস্টেম.ডেটটাইম; টোস্ট্রিং ("ও") ব্যবহার করছে। নেট এর রাউন্ড-ট্রিপ ফর্ম্যাট স্পেসিফায়ার যা একটি আইএসও 8601- অনুমানের তারিখের স্ট্রিং উত্পন্ন করে

new MyInfo {
    CreationDate = r.CreationDate.ToString("o"),
};

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

ঠিক JSON পুনরুদ্ধার করার পরে আমি তারিখগুলি জাভাস্রিপ্টের তারিখের অবজেক্ট হিসাবে তারিখ নির্বাহক ব্যবহার করে যা কোনও আইএসও 8601 তারিখের স্ট্রিং গ্রহণ করে ফিক্সআপে যায় ...

$.getJSON(
    "MyRestService.svc/myinfo",
    function (data) {
        $.each(data.myinfos, function (r) {
            this.CreatedOn = new Date(this.CreationDate);
        });
        // Now each myinfo object in the myinfos collection has a CreatedOn field that is a real JavaScript date (with timezone intact).
       alert(data.myinfos[0].CreationDate.toLocaleString());
    }
)

আপনার জাভাস্ক্রিপ্টের তারিখ একবার হয়ে গেলে আপনি সমস্ত সুবিধাজনক এবং নির্ভরযোগ্য তারিখের পদ্ধতি যেমন টোডস্ট্রিং , টু লোকালস্ট্রিং ইত্যাদি ব্যবহার করতে পারেন


16
var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); 

JQuery লাইব্রেরি ব্যবহার না করে অন্য বিকল্প আছে?


এটি একটি নতুন প্রশ্ন এবং এটি নিজের প্রশ্ন হিসাবে জিজ্ঞাসা করা উচিত এবং এখানে এম্বেড নয়।
স্পেন্সার সুলিভান

11

এটি আপনাকেও সহায়তা করতে পারে।

 function ToJavaScriptDate(value) { //To Parse Date from the Returned Parsed Date
        var pattern = /Date\(([^)]+)\)/;
        var results = pattern.exec(value);
        var dt = new Date(parseFloat(results[1]));
        return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
    }

10

নীচে JSON তারিখগুলি বিশ্লেষণের জন্য একটি সহজ সরল সমাধান রয়েছে। আপনার প্রয়োজন অনুসারে নীচের ফাংশনগুলি ব্যবহার করুন। আপনাকে কেবল নীচের ফাংশনগুলিতে প্যারামিটার হিসাবে আনা JSON ফর্ম্যাট তারিখটি পাস করতে হবে:

function JSONDate(dateStr) {
    var m, day;
    jsonDate = dateStr;
    var d = new Date(parseInt(jsonDate.substr(6)));
    m = d.getMonth() + 1;
    if (m < 10)
        m = '0' + m
    if (d.getDate() < 10)
        day = '0' + d.getDate()
    else
        day = d.getDate();
    return (m + '/' + day + '/' + d.getFullYear())
}

function JSONDateWithTime(dateStr) {
    jsonDate = dateStr;
    var d = new Date(parseInt(jsonDate.substr(6)));
    var m, day;
    m = d.getMonth() + 1;
    if (m < 10)
        m = '0' + m
    if (d.getDate() < 10)
        day = '0' + d.getDate()
    else
        day = d.getDate();
    var formattedDate = m + "/" + day + "/" + d.getFullYear();
    var hours = (d.getHours() < 10) ? "0" + d.getHours() : d.getHours();
    var minutes = (d.getMinutes() < 10) ? "0" + d.getMinutes() : d.getMinutes();
    var formattedTime = hours + ":" + minutes + ":" + d.getSeconds();
    formattedDate = formattedDate + " " + formattedTime;
    return formattedDate;
}

10

আপনি জাভাস্ক্রিপ্ট লাইব্রেরি moment.js ব্যবহার করতে পারেন , যখন আপনি বিভিন্ন স্থানীয় ফর্ম্যাটগুলির সাথে ডিল করার পরিকল্পনা করেন এবং তারিখের মানগুলি সহ অন্যান্য ক্রিয়াকলাপগুলি সম্পাদন করার পরিকল্পনা করেন:

function getMismatch(id) {
    $.getJSON("Main.aspx?Callback=GetMismatch",
    { MismatchId: id },

    function (result) {
        $("#AuthMerchId").text(result.AuthorizationMerchantId);
        $("#SttlMerchId").text(result.SettlementMerchantId);
        $("#CreateDate").text(moment(result.AppendDts).format("L"));
        $("#ExpireDate").text(moment(result.ExpiresDts).format("L"));
        $("#LastUpdate").text(moment(result.LastUpdateDts).format("L"));
        $("#LastUpdatedBy").text(result.LastUpdateNt);
        $("#ProcessIn").text(result.ProcessIn);
    }
    );
    return false;
}

স্থানীয়করণ সেটআপ করা আপনার প্রকল্পে কনফিগারেশন ফাইলগুলি (momentjs.com এ পাওয়া যায়) হিসাবে সহজ এবং ভাষাটি কনফিগার করা:

moment.lang('de');

9

আমি এই তারিখটি পেয়েছি:

"/Date(1276290000000+0300)/"

কিছু উদাহরণে তারিখটি কিছুটা আলাদা ফর্ম্যাটে রয়েছে:

"/Date(12762900000000300)/"
"Date(1276290000000-0300)"

প্রভৃতি

সুতরাং আমি নিম্নলিখিত RegExp নিয়ে এসেছি:

/\/+Date\(([\d+]+)\)\/+/

এবং চূড়ান্ত কোডটি হ'ল:

var myDate = new Date(parseInt(jsonWcfDate.replace(/\/+Date\(([\d+-]+)\)\/+/, '$1')));

আশা করি এটা সাহায্য করবে.

আপডেট: আমি মাইক্রোসফ্ট থেকে এই লিঙ্কটি পেয়েছি: আমি কীভাবে JSON এর সাথে তারিখগুলি সিরিয়ালাইজ করব?

এটির মতো মনে হচ্ছে আমরা সকলেই যার সন্ধান করছি।


1
রিজএক্সপ্লেস প্রতিস্থাপনগুলি ধীর গতিতে ... সাবস্ট্রাস্ট (6) ব্যবহার করে পূর্ণসংখ্যার অংশটি ধরে ফেলতে এবং পার্সেন্ট () এ উত্তীর্ণ করা খুব দ্রুত - আমার উত্তর নীচে দেখুন।
রায় টিঙ্কার 22:25


9

তারিখ আইএসও মান পরীক্ষা করে দেখুন; এ জাতীয় ধরণের:

yyyy.MM.ddThh:mm

হয়ে যায় 2008.11.20T22:18


জেএসএন স্কিমা অনুসারে, "তারিখের সময়" ফর্ম্যাটটি আরএফসি 3339, বিভাগ 5.6 এর সাথে মিলে যায়। সুতরাং আপনার GMT- এ তারিখের জন্য "yyyy-MM-ddTHH: মিমি: এসএসজেড" লিখতে হবে, বা জেড + টাইম অঞ্চল দ্বারা + এইচএচ: মিমি প্রতিস্থাপন করা উচিত।
gnasher729

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

9

এটি হতাশাব্যঞ্জক। আমার সমাধানটি ছিল ASP.NET এর জাভাস্ক্রিপ্টসরিয়ালাইজার দ্বারা উত্পাদিত মান থেকে "/ এবং /" পার্স করা যাতে জেএসএনের তারিখের আক্ষরিক নাও থাকতে পারে, তবুও এটি ব্রাউজারের দ্বারা তারিখ হিসাবে ব্যাখ্যা করা যায়, যা আমি সত্যই তাই করি চাই:{"myDate":Date(123456789)}

ডেটটাইমের জন্য কাস্টম জাভাস্ক্রিপ্ট কনভার্টার?

আমাকে রয় টিঙ্কারের মন্তব্যের যথার্থতার উপর জোর দিতে হবে। এটি আইনী জেএসওএন নয়। এটি জাভাস্ক্রিপ্টের সমস্যা হওয়ার আগে সমস্যাটি সরিয়ে ফেলার জন্য সার্ভারে এটি একটি নোংরা, নোংরা হ্যাক। এটি একটি জেএসএন পার্সারকে দম বন্ধ করবে। আমি এটি মাটি থেকে নামার জন্য ব্যবহার করেছি, তবে আমি আর এটি ব্যবহার করি না। যাইহোক, আমি এখনও সেরা উত্তরটি সার্ভারের সাথে তারিখের ফর্ম্যাটটি পরিবর্তনের সাথে নিহিত বলে মনে করি, উদাহরণস্বরূপ, আইএসও অন্য কোথাও উল্লিখিত হয়েছে as


2
এটি আইনী জেএসওএন নয়। এটি কেবল তখনই কাজ করবে যখন জাভাস্ক্রিপ্ট দোভাষীর সাহায্যে অনুসন্ধান করা যায়। তবে আপনি যদি কোনও JSON ডিকোডার ব্যবহার করছেন তবে এটি শ্বাসরোধ করবে।
রায় টিঙ্কার

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

8

দেরী পোস্ট, তবে যারা এই পোস্টটি অনুসন্ধান করেছেন তাদের জন্য।

এটি কল্পনা করুন:

    [Authorize(Roles = "Administrator")]
    [Authorize(Roles = "Director")]
    [Authorize(Roles = "Human Resources")]
    [HttpGet]
    public ActionResult GetUserData(string UserIdGuidKey)
    {
        if (UserIdGuidKey!= null)
        {
            var guidUserId = new Guid(UserIdGuidKey);
            var memuser = Membership.GetUser(guidUserId);
            var profileuser = Profile.GetUserProfile(memuser.UserName);
            var list = new {
                              UserName = memuser.UserName,
                              Email = memuser.Email ,
                              IsApproved = memuser.IsApproved.ToString() ,
                              IsLockedOut = memuser.IsLockedOut.ToString() ,
                              LastLockoutDate = memuser.LastLockoutDate.ToString() ,
                              CreationDate = memuser.CreationDate.ToString() ,
                              LastLoginDate = memuser.LastLoginDate.ToString() ,
                              LastActivityDate = memuser.LastActivityDate.ToString() ,
                              LastPasswordChangedDate = memuser.LastPasswordChangedDate.ToString() ,
                              IsOnline = memuser.IsOnline.ToString() ,
                              FirstName = profileuser.FirstName ,
                              LastName = profileuser.LastName ,
                              NickName = profileuser.NickName ,
                              BirthDate = profileuser.BirthDate.ToString() ,
            };
            return Json(list, JsonRequestBehavior.AllowGet);
        }
        return Redirect("Index");
    }

আপনি দেখতে পাচ্ছেন, আমি "অটো" জেনারিকস তৈরির জন্য সি # 3.0 এর বৈশিষ্ট্যটি ব্যবহার করছি। এটি কিছুটা অলস, তবে আমি এটি পছন্দ করি এবং এটি কার্যকর হয়। কেবলমাত্র একটি নোট: প্রোফাইলটি আমার ওয়েব অ্যাপ্লিকেশন প্রকল্পের জন্য তৈরি করা একটি কাস্টম শ্রেণি।


সুতরাং প্রতিবার আপনি কোনও নতুন ভূমিকা যুক্ত করুন [অনুমোদিত করুন (ভূমিকাসমূহ "" মানব সম্পদ ")], আপনাকে কি সংকলন এবং মোতায়েন করতে হবে? বাহ .... :)
অ্যালেক্স নোলাস্কো

1
এটি যদি কোনও JSON পরিষেবা হয় তবে পুনঃনির্দেশকে ভুল মনে হচ্ছে। আমি ইনপুট কীটি এতটা অবৈধ থাকলে এটি সম্ভবত খুঁজে পাওয়া যায় না, এমন একটি 404 পাওয়া যায়নি ( আমার ব্যবহারকারীরা লগ ইন না হলে আমি 403 নিষিদ্ধ ফিরে আসি।
রিচার্ড করফিল্ড

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

8

এফওয়াইআই, সার্ভার সাইডে পাইথন ব্যবহার করা প্রত্যেকের জন্য: ডেটটাইম.ডেটটাইম ()। সিটাইম () একটি স্ট্রিং প্রদান করে যা "নতুন তারিখ ()" দ্বারা স্থানীয়ভাবে পার্সযোগ্য। এটি হ'ল, যদি আপনি একটি নতুন ডেটটাইম.ডেটটাইম ইনস্ট্যান্স তৈরি করেন (যেমন ডেটটাইম.ডেটটাইম.নো সহ), স্ট্রিংটি জেএসএন স্ট্রিংয়ের সাথে অন্তর্ভুক্ত করা যেতে পারে এবং তারপরে সেই স্ট্রিংটি তারিখ কনস্ট্রাক্টরের প্রথম আর্গুমেন্ট হিসাবে পাস করা যেতে পারে। আমি এখনও কোনও ব্যতিক্রম খুঁজে পাইনি, তবে আমি এটি খুব কঠোরভাবে পরীক্ষাও করিনি either


8

মূল সমাধানগুলি:

new Date(Date(result.AppendDts)).format('%x')

মটুলগুলি আরও বেশি প্রয়োজন। ফায়ারফক্স ৩..3.৩ এবং আই.ই.


8
var obj = eval('(' + "{Date: \/Date(1278903921551)\/}".replace(/\/Date\((\d+)\)\//gi, "new Date($1)") + ')');
var dateValue = obj["Date"];


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.