2

我在一个 asp.net 页面上玩 SimpleWeather jquery 插件,它工作正常。 https://github.com/monkeecreate/jquery.simpleWeather

我只有两个问题:

  1. 我得到了上午和下午的时间,有没有人知道如何将其修复为 24 小时。

  2. 如果我知道weather.code http://developer.yahoo.com/weather/#codes,那么我可以用我自己的名字来表示热、冰雹等吗?

    $.getJSON(weatherUrl, function (data) { if (data !== null && data.query.results !== null) { $.each(data.query.results, function (i, result) { if (result .constructor.toString().indexOf("Array") !== -1) { result = result[0]; }

        var currentDate = new Date();
        var sunRise = new Date(currentDate.toDateString() + ' ' + result.astronomy.sunrise);
        var sunSet = new Date(currentDate.toDateString() + ' ' + result.astronomy.sunset);
    
        if (currentDate > sunRise && currentDate < sunSet) {
            var timeOfDay = 'd';
        } else {
            var timeOfDay = 'n';
        }
    
4

2 回答 2

1

你需要调整插件。要启用自定义条件文本,您可以添加新的选项属性以将条件代码映射到自定义文本并在插件中使用它,如下所示:

// this code is a part of weater object initialization
currently: options.conditions && options.conditions[result.item.condition.code] ? options.conditions[result.item.condition.code] : result.item.condition.text,
high: result.item.forecast[0].high,
low: result.item.forecast[0].low,
forecast: options.conditions && options.conditions[result.item.forecast[0].code] ? options.conditions[result.item.forecast[0].code] : result.item.forecast[0].text,

并将自定义属性传递给插件:

$.simpleWeather({
    location: 'Copenhagen, Denmark',
    unit: 'c',
    conditions: { 26: 'Overskyet', 27: 'Mest skyet', 28: 'Mest skyet', 36: 'Hagl' },

要更改日出和日落时间格式,您还可以调整插件。这一次您需要以格式解析时间h:mm tt并改为以格式显示HH:mm。如果您可以ScriptManager控制页面,则可以使用 Microsoft Ajax 日期对象扩展功能:

更改插件的代码:

$.getJSON(
    weatherUrl,
    function (data) {
        if (data !== null && data.query.results !== null) {
            $.each(data.query.results, function (i, result) {
                if (result.constructor.toString().indexOf("Array") !== -1) {
                    result = result[0];
                }

                var currentDate = new Date();
                if (Date.parseInvariant) {
                    result.astronomy.sunrise = Date.parseInvariant(result.astronomy.sunrise, "h:mm tt").format("HH:mm");
                    result.astronomy.sunset = Date.parseInvariant(result.astronomy.sunset, "h:mm tt").format("HH:mm");
                }
于 2012-08-25T13:12:02.890 回答
0

如果您需要使用 SimpleWeather jQuery 插件显示 24H 时间,那么 Yuriy 的解决方案不起作用......

但这是一个可行的解决方案。

在 js 脚本中找到此代码。

var currentDate = new Date();
var sunRise = new Date(currentDate.toDateString() + ' ' + result.astronomy.sunrise);
var sunSet = new Date(currentDate.toDateString() + ' ' + result.astronomy.sunset);

if (currentDate > sunRise && currentDate < sunSet) {
    var timeOfDay = 'd';
} else {
    var timeOfDay = 'n';
}

然后将该代码更改为此(如果日落是 20:05,那么 24H 的日落存在一些问题,那么它显示时间为 20:5 我没有在 MM 时间显示 xx:0x 第一个 0,此代码正在解决这个问题)

                        var currentDate = new Date();
                        var sunRise = new Date(currentDate.toDateString() + ' ' + result.astronomy.sunrise);
                        var sunSet = new Date(currentDate.toDateString() + ' ' + result.astronomy.sunset);

                        var sunRiseHour = "" + sunRise.getHours() + "";
                        var sunRiseMinute = "" + sunRise.getMinutes() + "";
                        var sunSetHour = "" + sunSet.getHours() + "";
                        var sunSetMinute = "" + sunSet.getMinutes() + "";

                        if (sunRiseHour.length == 1) {
                            sunRiseHour = "0" + sunRiseHour;
                        }
                        if (sunRiseMinute.length == 1) {
                            sunRiseMinute = "0" + sunRiseMinute;
                        }
                        if (sunSetHour.length == 1) {
                            sunSetHour = "0" + sunSetHour;
                        }
                        if (sunSetMinute.length == 1) {
                            sunSetMinute = "0" + sunSetMinute;
                        }
                        var sunRiseTime = sunRiseHour + ":" + sunRiseMinute;
                        var sunSetTime = sunSetHour + ":" + sunSetMinute;


                        if (currentDate > sunRise && currentDate < sunSet) {
                            var timeOfDay = 'd';
                        } else {
                            var timeOfDay = 'n';
                        }

如果显示 24H 而不是 AM/PM ex,请记住使用 SunSetTime 和 SunRiseTime。日落和日出。

如果小时内的前 0 也存在问题,它还解决了 HH 时间的问题。使用愉快...

于 2012-09-09T10:22:03.567 回答