【问题标题】:Getting day from date using jquery/javascript使用 jquery/javascript 从日期获取日期
【发布时间】:2012-01-07 16:22:01
【问题描述】:

我有一个格式为“YYYY/MM/DD”的日期。现在我想从这种格式中得到一天。如何使用 javascript 或 jquery 获取它?一种方法是这样

 $(document).ready(function() {

var d = new Date();

alert(d.getDay());
 } );

但这里的问题是 d 变量包含这种格式的日期

Sat Jan 07 2012 18:16:57 GMT+0200 (FLE Standard Time)

我怎样才能得到上述格式的日期?


这是我的函数的样子

function dayOfWeek(d) {
            var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Sunday');
            var currentDate = Math.round(+new Date(d)/1000);
            var nData = new Date(currentDate);
            //alert(nData);
            //alert(nData.getDay());
            //var day = d.split("-")[2];
            //var t = day.replace("0","");
            //alert(t);
            return dayNames[nData.getDay()];
        }

我正在做的是我以“YYYY-MM-DD”格式传递日期,并将该日期转换为 unix 时间戳,然后我得到日期,然后将日期返回为星期日或星期一等。但这里只有返回星期五,这是不正确的。当我更改日期时,它应该在数组中返回同一天。

【问题讨论】:

  • 阅读此处了解如何格式化日期时间stackoverflow.com/questions/4802190/… 查看 Skilldrick 答案
  • 我更新了我的帖子,请查看。谢谢
  • 看我的回答...PS:你忘了星期六:P
  • 更新了我的答案。请看一看。
  • the problem here is that d variable contains date in this format: Sat Jan 07 2012 18:16:57 GMT+0200 (FLE Standard Time);不——将其视为以某种内部二进制格式存储日期。 默认情况下,当您对其进行字符串化时,它看起来只是这样

标签: javascript jquery date


【解决方案1】:

Date Object 有一个 toString 方法,它以您描述的格式输出 UTC 日期字符串。不过DateObject 还有许多其他方法。

使用getDate 方法获取月份中的日期 (1-31):

d = new Date( ).getDate( ) ;

您的日期字符串的格式无法被Date 字符串构造函数识别。测试此行的返回值:

var nData = new Date(currentDate) ;

它会返回:

"invalid Date"

如果你的日期格式(d)是这样的,

"dd-mm-yyyy"

这样做,

var a = d.split("-") ;
var date = new Date( a[2], (a[1] - 1), a[0] ) ;

这应该让你得到一个工作的DateObject。或者使用post 中描述的 jQuery 的 datepicker 插件。


Link to MDN documentation

【讨论】:

【解决方案2】:

关于新更新的代码:

$(function()
  {
$("a").click(function () {
            var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
            var nData = new Date();
            //alert(nData);
            //alert(nData.getDay());
            //var day = d.split("-")[2];
            //var t = day.replace("0","");
            //alert(t);
            alert(dayNames[nData.getDay()]);
        });
});

上面的代码是一个例子。根据您的需要编辑http://jsfiddle.net/qgDHB/

我删除了一些不需要的行。

【讨论】:

    【解决方案3】:

    不要使用依赖于实现的内置日期到字符串的转换,也不要自己编写逻辑,最好使用合适的库。这是使用Globalize.js 的一种简单方法:

    function dayOfWeek(s) {
      var d = Globalize.parseDate(s, 'yyyy/M/d');
      if(d == null) { 
        return null;
      } else {
       return Globalize.format(d, 'dddd');
      }
    }
    

    这将解析格式为 YYYY/MM/DD 的输入(如果您的实际格式为 YYYY-MM-DD,则进行明显修改),更准确地说,年份为 4 位数字 (yyyy) 和月份 (M)和天 (d) 可能是 1 或 2 位数字(如果您希望强制执行 2 位数字,请使用 MM 和 dd 代替)。然后它写入日期,以便只写入星期几,作为一个单词 (dddd)。如果输入不是指定格式,则函数返回 null,您当然应该针对这种情况进行一些计划的错误处理。

    作为额外的奖励,代码将为全球化做好准备:如果您需要修改代码以生成另一种语言的名称,您只需添加一个为 Globalize.js 设置区域设置(语言)的函数调用。

    【讨论】:

      【解决方案4】:
      var d=new Date();
      var weekday=new Array(7);
      weekday[0]="Sunday";
      weekday[1]="Monday";
      weekday[2]="Tuesday";
      weekday[3]="Wednesday";
      weekday[4]="Thursday";
      weekday[5]="Friday";
      weekday[6]="Saturday";
      
      var n = weekday[d.getDay()];
      

      check

      【讨论】:

        【解决方案5】:

        您所说的“格式”是常规字符串吗?

        那么你可以这样做

        var theDay = theDate.split("/")[2];
        

        【讨论】:

        • 请看我更新的帖子,这将使我的问题更清楚。我想获取星期几,然后以星期日、星期一的格式显示。
        【解决方案6】:

        受上述 Globalize 答案的启发,以下是在 Sugar.js 库中的操作方法:

        <script src="sugar.min.js"></script>
        ...
        var test = Date.create(d);
        console.log(test.format("{Weekday}"));
        

        d 可以加载不同的格式(包括字符串或 secs-since-1970 或 JS Date 对象),输出格式选择同样全面。

        Sugar.js 被压缩并压缩为 17.9K(其中包括它添加的所有其他功能,而不仅仅是日期内容);这大约是我正在考虑的替代方案 Moment.js 大小的两倍。但是 Moment.js 没有 {dow}{weekday} 格式的等效项。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-04
          • 1970-01-01
          • 2021-05-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多