Есть ли функция для преобразования даты созданного Твиттера API в правильный формат для ColdFusion 8+? - PullRequest
4 голосов
/ 10 декабря 2010

Твиттер API выплевывает даты (созданный_at) из api.twitter.com в формате JSON в следующем формате:

«Пт. 10 декабря 17:12:00 +0000 2010» (<- обратите внимание, что год заканчивается) </p>

ColdFusion 9, похоже, не нравится этот формат и выдает ошибку.

Я пробовал различные встроенные функции даты ColdFusion, но безрезультатно. И я не смог найти ничего полезного на cflib.org. Итак, у кого-нибудь уже есть функция для этого?

Ответы [ 3 ]

2 голосов
/ 10 декабря 2010

Вы можете легко обработать эту строку как список, разделенный пробелами, и составить более дружественную строку.Поскольку массивы работают быстрее, чем списки, я соберу их в массив как можно быстрее, а затем буду работать с этим.

public string function getSaneTwitterDate(strDateIn) output="false"{
  var arrOrigDate = listToArray(strDateIn, ' ');
  var strNewDate = arrOrigDate[2] & ' ' & arrOrigDate[3] & ' ' & arrOrigDate[6];
  return dateFormat(strNewDate, 'yyyy-mm-dd');
}

Это не учитывает смещение времени или не включает информацию о времени, но онобыло бы легко добавить.

2 голосов
/ 08 июня 2013
<cffunction name="parseTwitterDateFormat" output="false" returntype="String" hint="I return a date in a useable date format.">
    <cfargument name="twitterDate" required="true" type="string" hint="The Twitter date." />

    <cfset var formatter = CreateObject("java", "java.text.SimpleDateFormat").init("EEE MMM d kk:mm:ss Z yyyy") />
    <cfset formatter.setLenient(true) />

    <cfreturn formatter.parse(arguments.twitterDate) />
</cffunction>

Кредит поступает в библиотеку Мэтта Гиффорда monkeyTweet https://github.com/coldfumonkeh/monkehTweets

2 голосов
/ 10 декабря 2010

попробуй http://pastebin.com/GuXu8Dy1

<cfscript>
function twitterDate(date,offset) {
    var retDate = listtoarray(date, " ");
    var thisDay = retDate[1];
    var thisMonth = retDate[2];
    var thisDate = retDate[3];
    var thisTime = timeformat(retDate[4], "h:mm tt");
    var thisYear = retDate[6];
    var thisReturn = "";
    var thisFormat = "#thisMonth#, #thisDate# #thisYear#";

    thisFormat = dateformat(thisFormat, "m/d/yy") & " " & thisTime;
    thisFormat = dateadd("s", offset, thisFormat);
    thisFormat = dateadd("h", 1, thisFormat);

    longFormat = dateformat(thisFormat, "yyyy-mm-dd") & " " & timeformat(thisFormat, "HH:mm:ss");

    thisReturn = longFormat;
    return thisReturn;
}
</cfscript>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...