কেবল তারিখ এবং কোনও সময় প্রদর্শন করুন


94

এমভিসি রেজারে, আমি বর্তমান তারিখটি ডেটাবেসে রাখছি ..

model.Returndate = DateTime.Now.Date.ToShortDateString();

যেহেতু ডাটাবেস ক্ষেত্রটি একটি ডেটটাইম ডেটাটাইপ এবং আমি বর্তমান তারিখটিকে স্ট্রিং ফর্ম্যাটে রূপান্তর করছি, এটি কাজ করছে না .. আমি কীভাবে এটি করতে পারি? আমি স্ট্রিং ফর্ম্যাটটি করছি কারণ আমি তারিখটি মিমি / ডিডি / ইয়াই ফর্ম্যাটে চাই এবং মিমি / ডিডি / ইয়াই এইচ: মিমি: এসএস টাইম ফর্ম্যাটটিতে না চাই ..

সম্পাদনা:

কন্ট্রোলারে আমার আছে

var model = new ViewModel();
model.ReturnDate = DateTime.Now;            
return PartialView("PartialView", model);  

আংশিক দৃষ্টিতে আমার আছে

@Html.EditorFor(model => model.Returndate)

এটি এখানে তারিখ এবং সময় হিসাবে একসাথে প্রদর্শিত হচ্ছে ... আমি ঠিক তারিখটি প্রদর্শিত হতে চাই। সময় নয়। আমি আশা করি এই সম্পাদনাটি আরও ভালভাবে ব্যাখ্যা করেছে।


4
00:00:00 (মধ্যরাত) সম্পর্কে চিন্তা করবেন না। ToString("mm/dd/yyyy");আপনি যা চান ঠিক তা দেখতে পাওয়ার জন্য আউটপুটটিকে ফর্ম্যাট করুন ।
চেজ ফ্লোরেল

4
ডাটাবেস হিসাবে ডেটা সংরক্ষণ করুন DateTime। আপনি OUTPUT এ স্ট্রিং ফর্ম্যাটিং করেন ... কেবল শেষ দর্শকের কাছে এটি ফর্ম্যাট করুন।
চেজ ফ্লোরেল

উত্তর:


97

যদি কলামের প্রকারটি এসকিউএলে ডেটটাইম হয় তবে এটি এমন সময় সঞ্চয় করবে যেখানে আপনি পাস করেছেন বা না করেন।

তারিখটি সঠিকভাবে সংরক্ষণ করা ভাল It

model.ReturnDate = DateTime.Now;

এবং তারপরে এটি ফর্ম্যাট করুন যখন আপনাকে এটি প্রদর্শন করতে হবে:

@Html.Label(Model.ReturnDate.ToShortDateString())

অথবা আপনি যদি সম্পাদকফোর ব্যবহার করছেন:

@Html.EditorFor(model => model.ReturnDate.ToShortDateString())

বা

@Html.EditorFor(model => model.ReturnDate.ToString("MM/dd/yyyy"))

আপনার মডেলটিতে কোনও সম্পত্তি যুক্ত করতে এই কোডটি যুক্ত করুন:

public string ReturnDateForDisplay
{
    get
    {
       return this.ReturnDate.ToString("d");
    }
}

তারপরে আপনার আংশিক দর্শনে:

@Html.EditorFor(model => model.ReturnDateForDisplay)

সম্পাদনা:

হাই ছেলেরা, এই উত্তরটির জন্য কেবল স্পষ্ট করে বলতে চাই যে 'আপনি যদি সম্পাদকীয় ব্যবহার করছেন' বলে আমার অর্থ হল, আপনি যে ধরণের মান উপস্থাপন করার চেষ্টা করছেন তার জন্য আপনার জন্য একটি এডিটরফোর্ড টেম্পলেট থাকা দরকার।

সম্পাদক টেমপ্লেটগুলি এমভিসিতে পুনরাবৃত্ত নিয়ন্ত্রণগুলি পরিচালনা করার দুর্দান্ত উপায়:

http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/

আমি এগুলি স্ট্রিংয়ের মতো নির্লজ্জ প্রকারের জন্য ব্যবহার করতে পারি যেমন আমি উপরে করেছি; তবে তারা আরও জটিল ডেটা টাইপের জন্য আপনাকে ইনপুট ক্ষেত্রগুলির একটি সেট টেম্পলেট দেওয়ার জন্য দুর্দান্ত।


কে এইটিকে কমেছে তা নিশ্চিত নয় .. তবে আমি এটি প্রদর্শন করার জন্য এইচটিএমএল.এলবেল ব্যবহার করছি না .. আমি এইচটিএমএল.এডিটরের জন্য (মডেল => মডেল। রিটারেন্ডেট) এই ক্ষেত্রে কীভাবে প্রদর্শনটি বিন্যাস করব ...
জেডভিউ

এটি কীভাবে আপনার ফলাফলটি ফর্ম্যাট করবেন তার একটি উদাহরণ ছিল; আমি আমার উত্তর আপডেট করব।
রাশ ক্লার্ক

14
@ রাস: আপনার সম্পাদনা সম্পাদনাটি কার্যকর হয়নি। এটি আমাকে একটি ত্রুটি দেয় "টেমপ্লেটগুলি কেবল ক্ষেত্রের অ্যাক্সেস, সম্পত্তি অ্যাক্সেস, একক মাত্রার অ্যারে সূচক বা একক পরামিতি কাস্টম সূচক এক্সপ্রেশন দিয়ে ব্যবহার করা যেতে পারে।
জেডভিউ

4
আমি আমার উত্তরে এটি যুক্ত করব
রাশ ক্লার্ক

19
আপনার উত্তর থেকে '@ এইচটিএমএল.এডিটর'র (মডেল => মডেল। টুশোর্টডস্ট্রিং ()) অপসারণ করা উচিত কারণ এটি কাজ করে না।
জেমস রেটেগুয়ে

131

এই দৃশ্যের সাথে কেবল নিজেকেই ডিল করতে হয়েছিল - এটি করার জন্য একটি খুব সহজ উপায় খুঁজে পেয়েছি, কেবল এইভাবে মডেলটিতে আপনার সম্পত্তিটি বর্ননা করুন:

[DataType(DataType.Date)]
public DateTime? SomeDateProperty { get; set; }

এটি তারিখ চয়নকারী থেকেও সময় বোতামটি আড়াল করবে।

এই উত্তরটি যদি একটু দেরি হয় তবে দুঃখিত;)


অনেক ধন্যবাদ. এটা আমার জন্য খুব সহায়ক পোস্ট ছিল! +1
Dmytro

4
ঠিক যেটা আমার দরকার ছিল. দুর্দান্ত!
RealityDysfunction

4
আমার সম্প্রতি একটি সেশন ছিল যেখানে ক্রোম যখন মজার স্টাফ রাখে ইনপুট টাইপের তারিখ হয়, এইচটিএমএল 5- এর একটি অংশ, আমি মনে করি, আমি পরিবর্তে jquery ডেটপিকার ব্যবহার করতে চেয়েছিলাম তাই আমি ডেটাটাইপ.টেক্সটের সাথে গিয়েছিলাম - যা এখনও আমাকে ফর্ম্যাটিং যথেষ্ট শীতল ব্যবহারের অনুমতি দিয়েছে
জন

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

তারিখটি যদি কোনও ডাটাবেস থেকে আসে তবে আমি জানি না কীভাবে এটি সাহায্য করতে পারে ... এটি বের করতে পারে না
এন্টোইন পেলেটিয়ার

41

আপনি যদি কোনও পাঠ্যবক্সে প্রদর্শন করতে চান তবে এটি কাজ করে:

@Html.TextBoxFor(m => m.Employee.DOB, "{0:dd-MM-yyyy}")

"ডিডি-এমএম-ইয়াই" এর চেয়ে ব্রাউজারের সেটিংগুলিতে আলাদা ফর্ম্যাট থাকলে, যেমন "এমএম-ডিডি-ইয়েই"
ওলেগ শ

16

ডেটবেসে তারিখ / সময় কোনও ফর্ম্যাট সংস্করণ হবে না । এটি কেবল তারিখ / সময় নিজেই হবে। আপনি ডাটাবেস থেকে মানটি বের করার সময় আপনি সেই তারিখ / সময়টি কীভাবে প্রদর্শন করবেন তা ভিন্ন বিষয়। আমি দৃ just়ভাবে সন্দেহ করি যে আপনি সত্যই চান:

model.Returndate = DateTime.Now.Date;

বা সম্ভবত

model.Returndate = DateTime.UtcNow.Date;

হ্যাঁ, আপনি যদি এসকিউএল সার্ভার স্টুডিও বা অন্য যে কোনও কিছু ব্যবহার করে ডাটাবেসটি দেখেন তবে আপনি এখন মধ্যরাতটি দেখতে পাবেন - তবে এটি অপ্রাসঙ্গিক এবং আপনি যখন ডাটাবেসের বাইরে তারিখটি বের করে কোনও ব্যবহারকারীর কাছে প্রদর্শন করেন, তখন আপনি প্রাসঙ্গিক ফর্ম্যাটটি প্রয়োগ করতে পারেন ।

সম্পাদনা: আপনার সম্পাদিত প্রশ্ন সম্পর্কে, সমস্যাটি মডেলটির সাথে নয় - আপনি দেখুনটি কীভাবে নির্দিষ্ট করবেন। আপনার কিছু ব্যবহার করা উচিত:

@Html.EditorFor(model => model.Returndate.Date.ToString("d"))

যেখানে dহয় মান তারিখ এবং সময় ফর্ম্যাট সুনির্দিষ্টভাবে উল্লেখ করা সংক্ষিপ্ত তারিখ প্যাটার্ন জন্য (এটা একাউন্টে বর্তমান সাংস্কৃতিক সেটিংস নেব যার মানে)।

আমি বারবার বলছি এটিই হ'ল - আপনি যখন তারিখ / সময় ব্যবহারকারীর কাছে প্রদর্শন করেন , সময় সময় ছাড়া এটি তারিখ হিসাবে ফর্ম্যাট করার সময়।

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


তারিখটাইম.নাউ.সেট এখনও তারিখের সাথে সময় প্রদর্শন করে।
জেডভিউ

4
@ জেডভিউনু: এটি কোথায় প্রদর্শন করে? আপনার একটি তারিখটাইম মান সংরক্ষণ করা উচিত এবং আপনি তারিখটি যেখানে প্রদর্শন করছেন সেখানে কেবলমাত্র তারিখ-বিন্যাস নির্দিষ্টকরণ ব্যবহার করা উচিত । আপনি যে কোডটি দিয়েছেন (মডেলটিতে একটি সম্পত্তি সেট করছেন) সম্ভবত এটি স্টোরেজের জন্য, তাই এটি মধ্যরাতের একটি সময় পেয়েছে তা বিবেচ্য নয়।
জন স্কিচ

জনের পরামর্শ ছিল আমি কী সম্পর্কে কথা বলছিলাম, তারিখটি এসকিউএল-তে দাঁড়িয়ে আছে তেমন সংরক্ষণ করা; আপনি যখন মুদ্রণ করবেন তখন আপনি যথাযথভাবে আপনার তারিখটি ফর্ম্যাট করতে পারেন।
রাশ ক্লার্ক

4
@ জোন: আমি যখন এইচটিএমএল.এডিটরের জন্য আপনার সম্পাদনা কোডটি ব্যবহার করেছি তখন আমি এই ত্রুটিটি পেয়ে যাচ্ছি .... "টেমপ্লেটগুলি কেবল ক্ষেত্র অ্যাক্সেস, সম্পত্তি অ্যাক্সেস, একক মাত্রা অ্যারে সূচক, বা একক-পরামিতি কাস্টম সূচক এক্সপ্রেশন দিয়ে ব্যবহার করা যেতে পারে"। ... রান সময়ে
জেডভিউ

4
: @ZVenue: একটি এ খুব চেহারা আছে stackoverflow.com/questions/5033902/...
জন স্কিট

8

আপনি নীচের মতো আপনার ভিউমোডেলটি সংশোধন করতে পারেন:

[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}",ApplyFormatInEditMode = true)]

এই সমাধানটি ক্রোমের ডেটপিকারের বিরোধেরও সমাধান করে। আপনি যদি কেবলমাত্র ভিডমোডলে ডেটাটাইপ.ডেট নির্দিষ্ট করেন তবে Chrome টেক্সটবক্সে ডেটপিকারের নিজস্ব সংস্করণ ব্যবহার করে। ধন্যবাদ!
ক্যাথরিন

7

আপনি ToStringপছন্দ মতো তারিখের সময় বিন্যাস প্রয়োগ করতে পারেন :

DateTime.Now.Date.ToString("MM/dd/yyyy");

DateTime.ToStringফর্ম্যাট প্যাটার্নে আরও পড়া এখানে এবং এখানে পাওয়া যাবে

সম্পাদনা: আপনার প্রশ্ন সম্পাদনার পরে, ঠিক কীভাবে অন্যান্য আপনাকে পরামর্শ দেওয়ার জন্য তারিখের ফর্ম্যাটটি প্রয়োগ করা উচিত:

model.Returndate = DateTime.Now.Date;

@Html.EditorFor(model => model.Returndate.Date.ToString("MM/dd/yyyy"))

4
এটি যদিও তারিখটি সংরক্ষণ করার সমস্যাটিকে সহায়তা করবে না।
রাশ ক্লার্ক

ফোন করে সে কি সেভ করতে পারবে না model.Returndate.ToString("mm/dd/yyyy")?
জালাল

সমস্যাটি আছে .. আমি সেই মানটি একটি ডেটটাইম ফিল্ডে ডিবিতে রাখছি। সুতরাং এটি কাজ করবে না .. দয়া করে আমার আসল পোস্টটি দেখুন।
জেডভিউ

এটি হওয়া উচিত নয়। টুস্ট্রিং ("এমএম / ডিডি / ইয়াই")? মিমি মিনিট নয়, মাস নয়!
বোড্রিক

@ বোডরিচ: ধন্যবাদ, আপডেট হয়েছে, যদিও আমি কেবল তার প্যাটার্নটি কপি করেছি।
জালাল বলেছেন

4

আমি রেজারে নিশ্চিত নই তবে এএসপিএক্স-এ আপনি যা করেন তা:

 <%if (item.Modify_Date != null)
  {%>
     <%=Html.Encode(String.Format("{0:D}", item.Modify_Date))%>     
<%} %>

রেজারেও একই রকম কিছু থাকতে হবে। আশা করি এটি কারও সাহায্য করবে।


4
হ্যাঁ এটি রেজার সিনট্যাক্সেও কাজ করবে, যেমন @ এইচটিএমএল। এনকোড (স্ট্রিং.ফর্ম্যাট ("0: ডি", আইটেম.মডিফাই_ডেট))
গ্যালাগার

4

আপনার যদি নীচের মতো লুপের জন্য থাকে।

পরিবর্তন করুন @ item.StartDate @ item.StartDate.Value.ToShortDateString ()

আপনি যদি আমার ক্ষেত্রে যেমন মডেলটিতে আপনার সম্পত্তিটি বর্ননা করতে না পারেন তবে এটি কেবল সময় সরিয়ে ফেলবে।

<table>
  <tr>
   <th>Type</th>
   <th>Start Date</th>
  </tr>
    @foreach (var item in Model.TestList) {
      <tr>
        <td>@item.TypeName</td>
        <td>@item.StartDate.Value.ToShortDateString()</td>
      </tr>
      }
</table>

2

পছন্দসই আউটপুট পাওয়ার জন্য ডিসপ্লে ফোর্ম্যাট এবং অ্যাপ্লিকেশন ফরম্যাটআইএনইডিটমোডের মতো ডেটা টীকাগুলি অন্তর্ভুক্ত করুন।

[Display(Name = "Bill Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public DateTime BillDate { get; set; }

এখন আপনার বিলের তারিখটি দেখাবে।

এখানে চিত্র বর্ণনা লিখুন


অন্যান্য উত্তর দেখুন দয়া করে। আপনি কি আপনার প্রয়োজনীয় বলে মনে করেন এবং পোস্টে কিছু নতুন মানের সামগ্রী যুক্ত করেছেন?
এল। গুথার্ট

1

আপনি কেবল তারিখের সময় রূপান্তর করতে পারেন। কিছুটা এইরকম:

@Convert.ToString(string.Format("{0:dd/MM/yyyy}", Model.Returndate))

1

এই পৃষ্ঠার অন্যান্য সমাধানগুলির সাথে আমার কিছু সমস্যা ছিল, তাই ভেবেছিলাম আমি এটিকে ফেলে দেব।

@Html.TextBoxFor(m => m.EndDate, "{0:d}", new { @class = "form-control datepicker" })

সুতরাং আপনাকে কেবল দ্বিতীয় প্যারামিটারে "{0: d}" যুক্ত করতে হবে এবং আপনাকে যেতে হবে should

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