2012-06-29 27 views
11

प्रदर्शित करने के लिए परिणाम का उपयोग करें, मैं ग्राहक की साइट पर काम कर रहा हूं, और उन्हें समाप्त होने के लिए दो सप्ताह या उससे कम होने पर कूपन की समाप्ति तिथियों को लाल बदलने की आवश्यकता है। अन्यथा वे काले होंगे।(कोल्डफ्यूजन) दो तिथियों की तुलना करें,

साइट स्वयं ही मेरे द्वारा नहीं बनाई गई थी। मैंने अभी शुरू किया और वे मुझे कोल्डफ्यूजन सीखना चाहते हैं। तो मैं इसके माध्यम से ठोकर खा रहा हूँ।

मैंने सोचा कि शायद DateCompare या DateDiff का उपयोग करके मैं जो चाहता हूं उसे प्राप्त कर सकता हूं। हालांकि जब मैं <CFOUTPUT> तुलना करता हूं तो तुलनात्मक रूप से मुझे गड़बड़ हो जाती है। यह 51515151551 की एक लंबी स्ट्रिंग प्रदर्शित करता है जो ग्राहकों की सूची में प्रत्येक आगामी कूपन आइटम के लिए धीरे-धीरे छोटे और छोटे हो जाता है।

कूपन दिनांक स्वयं (यानी end_date) को Microsoft SQL डेटाबेस से बुलाया जाता है। इसे डेटफॉर्मेट का उपयोग करके स्वरूपित किया गया है: #dateformat(end_date,"m/d/yyyy")#

मैंने Now() के साथ इसकी तुलना करने की कोशिश की ताकि गतिशील रूप से निर्धारित किया जा सके कि समाप्ति तिथि लाल रंग होनी चाहिए या नहीं। मैंने Now() स्वरूपण करने का भी प्रयास किया है, मुझे एक ही परिणाम मिलते हैं।

कोई भी अनुभवी प्रोग्रामर जो मुझे सही रास्ते पर ले जा सकता है?

उत्तर

18

डेटीफ जो आप चाहते हैं वह है। क्या आप तिथि तिथि में सही दिनांक भाग का उपयोग कर रहे हैं? आप दिनों के लिए 'ww' या दिनों के लिए 'डी' का उपयोग कर सकते हैं, मैंने नीचे दिए गए उदाहरण में दिनों का उपयोग किया था।

<cfset CouponDate = createDate(2012, 05, 29) /> 
<cfif DateDiff("d", CouponDate, Now()) GTE 14> 
    <cfset Expired = False /> 
<cfelse> 
    <cfset Expired = True /> 
</cfif> 

जाहिर है आपको एक चर या कुछ सेट करने की आवश्यकता नहीं है, यह आपके विचार को काम करने के लिए केवल कुछ उदाहरण कोड है। :)

+0

हाँ, उपयोग कर सकते हैं क्या उन्होंने कहा, verbatim। :) –

+2

मुझे लगता है कि 'कालबाह्य' मान उलट दिए गए हैं। – Leigh

+0

वे हैं! फिक्सिंग ... मैंने इसे स्विच कर दिया ताकि कूपनडेट पहले था() और उन्हें भी चारों ओर स्वैप नहीं किया। अच्छी पकड़। – Busches

1
<cfscript> 
// setup first test date for 7 days ago 
date1 = dateAdd('d', -7, now()); 
// setup second date for 14 days ago 
date2 = dateAdd('d', -14, now()); 
// compare date 1 
writeOutput(dateDiff('d', date1, now()) & '<hr/>'); 
// compare date 2 
writeOutput(dateDiff('d', date2, now()) & '<hr/>'); 
// demonstrate use 
if (dateDiff('d', date2, now()) gte 14) { 
    writeOutput('RED'); 
} 
</cfscript> 
0

यह मेरे लिए काम किया:

<cfset dtdiff = query.expiry_date - Now() /> 
<cfif Round(dtdiff) LEQ 14> 
    Red 
<cfelse> 
    Black 
</cfif> 

आप समय अंतर के साथ 14 दिनों का उपयोग करने के लिए wan't अगर आप

बजाय Fix(dtdiff)Round(dtdiff)

+0

पहिया को फिर से क्यों शुरू करें? डेटडिफ पहले से ही यही करता है। – Leigh

+0

मुझे mssql टाइमस्टैम्प की तुलना में अब ठंडे फ़्यूज़न की तुलना में समस्या थी()। इसके साथ मैंने इस मुद्दे को ठीक किया। और मुझे यकीन है कि स्टैक ओवरफ्लो अलग-अलग उत्तरों की अपेक्षा करता है .. और यह निश्चित रूप से दूसरों की मदद कर सकता है। –

+0

किस तरह का मुद्दा? (यदि आप वास्तव में 'टाइमस्टैम्प' का मतलब है जो दिनांक/डेटाटाइम से बिल्कुल अलग है।) जब तिथियों की बात आती है, तो सबसे अच्छा कारण होने तक अपने-अपने तर्क को रोल न करें। Mssql टाइमस्टैम्प और अब के बीच diff के साथ – Leigh

संबंधित मुद्दे