रेजर का उपयोग करके डेटाइम प्रारूप को परिवर्तित करना


104

निम्नलिखित में क्या गलत है?

@Convert.ToDateTime((@item.Date.ToShortDateString())," dd - M - yy")

@ item.Date 20/11/2005 12:00 am दिखा रहा है और मैं 20 नवंबर 2011 को प्रदर्शित करना चाहता हूं


1
विभिन्न तिथि प्रारूप निर्दिष्टकों के संयोजन यहां मौजूद हो सकते हैं: msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
जोसेफ वुडवर्ड

जवाबों:


264

प्रयत्न:

@item.Date.ToString("dd MMM yyyy")

या आप [DisplayFormat]अपने दृश्य मॉडल पर विशेषता का उपयोग कर सकते हैं :

[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
public DateTime Date { get; set }

और आपके विचार में बस:

@Html.DisplayFor(x => x.Date)

3
मैंने एक टेक्स्टबॉक्स के साथ यह कोशिश की और दुर्भाग्य से यह काम नहीं किया। क्या टेक्स्टबॉक्स के लिए ऐसा करने का कोई तरीका है?
टोबियास

2
एक टेक्स्टबॉक्स के लिए DisplayFor के बजाय EditorFor का उपयोग करें
ब्रैंडन row Renfrow

10
अपनी DisplayFormat परिभाषा में "ApplyFormatInEditMode = true" सेट करने के लिए याद रखें यदि आप चाहते हैं कि दिनांक को EditorFor () तत्वों पर लागू किया जाए।
लेटीड्यूपर

1
अंतर्निहित दिनांक पिकर का उपयोग करने के लिए मुझे एक DateTime फ़ील्ड के लिए इसका उपयोग करने की आवश्यकता थी। DisplayFormat एनोटेशन के बिना, ब्राउज़र में जावास्क्रिप्ट कंसोल कुछ ऐसा दिखाएगा जैसे "निर्दिष्ट मान '1/1/1990 12:00:00 AM' आवश्यक प्रारूप के अनुरूप नहीं है, 'yyyy-MM-dd'।" मुझे दोनों DataFormatString सेट करने और ApplyFormatInEditMode को अपने MVC दृश्य में EditorFor का उपयोग करते समय त्रुटि को दूर करने और मूल्य को ठीक से प्रदर्शित करने के लिए सही पर सेट करना था।
मार्क

यह मेरे लिए काम करता है, लेकिन मुझे पता नहीं है - मुझे लगता है कि मैं एक विशेषता के माध्यम से मॉडल में एक तारीख (एक प्रस्तुति चिंता) के लिए तर्क को लागू करके चिंताओं को अलग करने का उल्लंघन कर रहा हूं। मुझे यह समझ में आया कि Microsoft यह कैसे काम करने की उम्मीद करता है, लेकिन ऐसा लगता है कि डेटा डिस्प्ले फॉर्मेटिंग को दृश्य में अलग किया जाना चाहिए और मॉडल को बस एक मॉडल होना चाहिए।
बैरीपिकर

73

यह समाधान है:

@item.Published.Value.ToString("dd. MM. yyyy")

ToString () से पहले मान का उपयोग करें ।


1
इस कोड सही है लेकिन अगर तिथि स्तंभ रिक्त है, यह त्रुटि फेंक देगा, इसलिए कोशिश यह
shaijut

Stom सही है, यदि आपके पास शून्य मान हैं, तो आप त्रुटि को फेंक देंगे, लिंक के लिए धन्यवाद
Nick Kahn

बस मैं क्या देख रहा था
रोजर टेल्लो

अशक्त अपवाद संचालक - null coalescing ऑपरेटर का उपयोग करके नियंत्रित किया जा सकता है @(item.DOB?.ToString("dd-MMM-yyyy"))। या HasValue संपत्ति का उपयोग करके - @(item.DataDate.HasValue ? item.DataDate.Value.Date.ToString("dd MMM yyyy") : null)। दोनों ही मामलों में संपत्ति अशक्त डेटाटाइम होना चाहिए।
क्वासर

31

MVC 4.0 में यह प्रयास करें

@Html.TextBoxFor(m => m.YourDate, "{0:dd/MM/yyyy}", new { @class = "datefield form-control", @placeholder = "Enter start date..." })

2
मुझे नहीं पता कि कोई भी इस जवाब को क्यों नहीं ठुकराएगा।
मिकाईल अब्दुल्लायेव

मैं मान सकता हूं कि इस समाधान के कारण तारीख को "dd / MM / yyyy" के रूप में स्वरूपित किया गया था, बजाय "dd MMM yyyy" प्रारूप के, जो कि ओपी ने अनुरोध किया था
PTD

1
यह एक चुना हुआ उत्तर होना चाहिए। मैंने दूसरों की कोशिश की और कोई काम नहीं किया। धन्यवाद।
विक्टर ली

20

[DisplayFormat] विशेषता का उपयोग केवल EditorFor / DisplayFor में किया जाता है, न कि TextBox बॉक्सर जैसे कच्चे HTML APIs द्वारा। मैंने निम्नलिखित कार्य करके इसे प्राप्त किया,

नमूना:

[Display(Name = "When was that document issued ?")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime? LiquorLicenceDocumentIssueDate { get; set; }

राय:

        <div id="IsLiquorLicenceDocumentOnPremisesYes" class="groupLongLabel">
            @Html.LabelFor(m => m.LiquorLicenceDocumentIssueDate)
            <span class="indicator"></span>
            @Html.EditorFor(m => m.LiquorLicenceDocumentIssueDate)
            <span id="validEmail"></span>
            <br />
            @Html.ValidationMessageFor(m => m.LiquorLicenceDocumentIssueDate)
        </div>

आउटपुट: 30/12/2011

संबंधित लिंक:

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute.applyformatineditmode.aspx


1
वैकल्पिक रूप से, आप @ string.Format ("{0: MM yyyy}", imprint.VersionDate का उपयोग भी कर सकते हैं
दिगंत कुमार


4

रेजर के लिए DateTime.cshtml फ़ाइल को दृश्य / साझा / EditorTemplates फ़ोल्डर में रखें। DateTime.cshtml में दो लाइनें होती हैं और एक पाठ बॉक्स का निर्माण होता है जिसमें दिनांक 9/11/2001 प्रारूपित होता है।

@model DateTime?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" })

1
धन्यवाद ... काम करने के लिए दूसरों में से कोई भी नहीं मिला। क्या सी # / रेज़र को बदल दिया गया है, जहां एक साधारण तिथि प्रारूप में काम करने के लिए इतनी सारी चीजों से गुजरना पड़ता है? इंटरनेट पर सबसे अधिक सुझाए गए उत्तर: .... ToString ("dd MMM yyyy") ने कभी भी मेरे लिए काम नहीं किया है और मैंने हमेशा इसे एक चर में बदलकर इसे एक तारीख में परिवर्तित करने और फिर तारीख को आउटपुट करने के लिए समाप्त कर दिया था। मुझे पता था कि एक लाइनर बनना है जो कहीं काम करता है।
एंथोनी ग्रिग्स

एंथोनी ग्रिग्स, मुझे लगता है कि क्यूज़। दुख दर्द को साझा करने के लिए खुशी है कि हम सब --6½ साल बाद हासिल कर सकते हैं!
जूल्स बार्टो

3

सामान्य तौर पर, लिखित महीने को MMM, 4-अंकों के वर्ष के रूप में yyyy से बच जाता है, इसलिए आपके प्रारूप स्ट्रिंग को "dd MMM yyyy" की तरह देखना चाहिए

DateTime.ToString("dd MMM yyyy")

@ ViewBag.PurchaseInfo.LastPurchaseTime.ToString ("dd.MM.yyyy")
yonexbat

3

मैं ऊपर दिए गए सुझावों के आधार पर यह पूरी तरह से काम नहीं कर पा रहा था। जिसमें DataTypeAttribute शामिल है[DataType(DataType.Date)] मेरी समस्या को हल , देखें:

नमूना

[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime RptDate { get; set; }

राय

@Html.EditorFor(m => m.CLPosts.RptDate)

HTH


1

सभी दिए गए समाधान के लिए, जब आप आधुनिक ब्राउज़र (जैसे एफएफ) में यह कोशिश करते हैं, और आपने सही मॉडल सेट किया है

// Model
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime Start { get; set; }

// View
<div class="form-group">
    @Html.LabelFor(model => model.Start, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.Start, "{0:dd-MM-yyyy}", new { htmlAttributes = new { @class = "form-control"} })
    </div>
</div>

mvc (5) wil रेंडर ( इनपुट का प्रकार आपके मॉडल में आपकी तारीख सेटिंग्स के आधार पर तारीख पर सेट है !)

<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Start must be a date." data-val-required="The Start field is required." id="Start" name="Start" value="01-05-2018" type="date">
        <span class="field-validation-valid text-danger" data-valmsg-for="Start" data-valmsg-replace="true"></span>
</div>

और ब्राउजर दिखाएगा

यहां छवि विवरण दर्ज करें

इसे ठीक करने के आप को बदलने की जरूरत प्रकार के पाठ के बजाय तिथि (आप अपने कस्टम कैलेंडर का उपयोग करना चाहते भी हैं)

@Html.EditorFor(model => model.Start, "{0:dd-MM-yyyy}", new { htmlAttributes = new { @class = "form-control", @type = "text" } })
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.