【问题标题】:Linking to a URL that changes daily?链接到每天都在变化的 URL?
【发布时间】:2016-04-04 09:56:22
【问题描述】:

我正在尝试链接到一个每天都在变化的网站...

网址是http://www.lwcb.ca/waterflowdata.html,链接是“曼尼托​​巴省的温尼伯河”。该网站通过将当前日期添加到文件名末尾来进行自我更新。例如,如果今天是 12 月 29 日,那么它将链接到 http://www.lwcb.ca/pdf/WinnipegRiverManitobaGraph2015.12.29.pdf

我需要这个文件可以从另一个网站链接,并且似乎找不到任何可以做类似事情的代码。有什么想法吗?

【问题讨论】:

  • 使用Date 函数获取今天的年月日,并将它们连接到链接。不要忘记 Javascript 中的月份数字是从 0 一月份开始的,所以你需要加 1。
  • 感谢所有帮助...将其连接到链接的最佳方法是什么?
  • newlink = link + year + '.' + month + '.' + day
  • 感谢所有出色的帮助......你们非常棒。像魅力一样工作......

标签: javascript jquery css url dynamic


【解决方案1】:

你可以这样generate today's date

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();

然后,处理输入以生成所需的字符串:

today = yyyy + '.' + mm + '.' dd;
var url = "http://www.lwcb.ca/pdf/WinnipegRiverManitobaGraph" + today + ".pdf";

最后是创建一个使用该值的链接的问题。


如果您想在中午之后使用今天的日期,请说:

var today = new Date();
if (today.getHours() < 12) {
    date.setDate(date.getDate() - 1);
    var today = new Date();
}

看一个例子:

var today = new Date();
if (today.getHours() < 12) {
    today = (function(d){ d.setDate(d.getDate()-1); return d})(new Date)
}
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
var mydate = yyyy + '.' + mm + '.' + dd;
var url = "http://www.lwcb.ca/pdf/WinnipegRiverManitobaGraph" + mydate + ".pdf";
document.write(url);

并查看完整的工作示例:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
today = yyyy + '.' + mm + '.' + dd;
var url = "http://www.lwcb.ca/pdf/WinnipegRiverManitobaGraph" + today + ".pdf";

$("a#url").attr("href", url)
});
</script>
</head>
<body>


<a href="a" id="url">Link to my pdf</a>
<a href="www.google.com" id="blabla">Link to google</a>

【讨论】:

  • 这很好用,但我想知道如何将实际的 URL 变量实现到我的 标记中?
  • @JamesRogowy 我刚刚更新了一个完整的工作示例,该示例在加载页面时更改了 href 值。
  • 现在的代码工作方式存在一个问题。对于页面上的每个链接,它现在都转到 URL 变量。我只希望它在页面内的单个 上链接到它。
  • @JamesRogowy 是的,我曾考虑过但没有实施。只需将$('a') 更改为$('a#url') 即可。也就是到这个链接的id。查看更新的示例。
  • 好的,现在假设我有野心,我想添加第二个链接,该链接的工作原理相同,但名称不同: var url2 = "lwcb.ca/pdf/LowerWinnipegRiverTributariesGraph12" 我如何将它链接到新的 标签?
【解决方案2】:

这是一个比看起来更难的问题。

到目前为止,所有答案都建议使用 JavaScript 解决方案来生成日期,但这并不是涵盖所有场景的解决方案。

您将链接到的文档似乎是一份每日报告,我假设是根据收集的数据生成的。当访问您网站的人的系统日期不正确或者他们只是位于不同的时区时,问题就开始了。

这会导致您想要链接到当前的最新报告,但您可能会链接到不存在的或旧的报告。

解决此问题的最佳方法是让托管文件的服务器负责提供最新报告。一个简单的脚本检查最新生成的报告并重定向到它就足够了。当报告无法生成时,这将另外解决问题,在这种情况下,用户将获得最后一个有效数据。

或者,您可以在您的服务器上生成链接,在已知时区(并考虑差异)或最坏的情况下 - 在 Javascript 中考虑客户端的时区 - 但无论如何这不会涵盖所有情况.

具体的实现细节取决于您可用的服务器语言。

【讨论】:

    【解决方案3】:

    尝试关注。

    var d=new Date()
    var url=link+d.getFullYear()+'.'+(d.getMonth() + 1) + '.' + d.getDate() 
    

    【讨论】:

      【解决方案4】:

      获取当前日期,然后将其插入路径中。如果您想存储在数据库或其他东西中,请使用 PHP/ASP 之类的服务器端语言。

      //JS

      var date = new Date();
      var today = date.getDate();
      var month = date.getMonth();
      var year = date.getFullYear();
      var date = year+"."+(month+1)+"."+today;
      var path = "http://www.lwcb.ca/pdf/WinnipegRiverManitobaGraph/"+date+".pdf";
      console.log(path);
      

      【讨论】:

        【解决方案5】:

        连接 日期 到链接。它将使您随时了解链接

        【讨论】:

        • 这就是他要问的。
        猜你喜欢
        • 2017-11-18
        • 2019-01-06
        • 1970-01-01
        • 1970-01-01
        • 2019-08-06
        • 1970-01-01
        • 2021-10-19
        • 2021-11-09
        • 1970-01-01
        相关资源
        最近更新 更多