0

我收到一个带有不想要的日期格式的字段的查询(2013 年 2 月 21 日星期四 00:00:00 EST 2013)有没有办法将其修改为 mm-dd-yyy?

我正在使用 javascript,我找到了一种 php 方式来执行此操作,但遗憾的是它必须使用 javascript,因此指令必须与 TOAD 中的指令几乎相同。

我尝试了 CONVERT() 方法,但它不起作用。我不确定我是否正确使用它

4

5 回答 5

1

Convert() 函数将起作用,但您需要使用此处的正确格式代码: SQL Convert() 函数

SELECT Convert(char(10), @date, 110)
于 2013-02-28T21:57:13.097 回答
0

Date.js对于日期格式非常方便。

于 2013-02-28T21:56:10.727 回答
0

您可以使用 JS 中的基本 Date 对象函数。

首先,创建日期变量:

var date = new Date('your date value');

然后您可以访问各个日期片段:

var month = date.getMonth() + 1;  //gets the month . . . it's 0-based, so add 1
var day = date.getDate();         //gets the day of the month
var year = date.getFullYear();    //gets the 4-digit year

一旦你有了这些值,你就可以将它们以你想要的任何格式连接起来。对于基本的 mm-dd-yyyy,请使用:

var formattedDate = month + "-" + day + "-" + year;

那里的时间和时区值也可用。

于 2013-02-28T22:02:31.947 回答
0

您可能可以尝试转换为 unix 时间戳,然后进行格式化。我还没有测试过这个,它可能会抛出一个错误,但你明白了。

var input = your date;
input = input.split(" - ").map(function (date){
return Date.parse(date+"-0500")/1000;
}).join(" - ");

var year = input.getYear();
var month = input.getMonth();
var day = input.getDay();
var hours = input.getHours();
var minutes = input.getMinutes();
var seconds = input.getSeconds();
var formatted = month + " " + day + ", " + year + " at " hours + ':' + minutes + ':' +     seconds;
于 2013-02-28T22:09:42.823 回答
0

这是一种严重混淆的格式。有两种修改它的基本方法,一种是重新排序您拥有的位,另一种是将其转换为日期对象并使用它来创建新字符串。无论哪种方式,您都没有说如何处理时区偏移量。

使用时区的缩写或名称是模棱两可的,它们没有标准,有些是重复的(EST 用于三个不同的时区)。在任何情况下,一个简单的重新排序可以是:

function formatDate(s) {
  var months = {jan:'01', feb:'02', mar:'03', apr:'04',
                may:'05', jun:'06', jul:'07', aug:'08',
                sep:'09', oct:'10', nov:'11', dec:'12'};
  var s = s.split(' ');
  var d = (s[2] < 10? '0' : '') + s[2]; 

  return months[s[1].toLowerCase()] + '-' + d + '-' + s[5];
}

alert(formatDate('Thu Feb 21 00:00:00 EST 2013')); // 02-21-2013

输出格式 (mm-dd-yyyy) 不明确,请考虑使用 21-Feb-2013 之类的格式或 ISO8601 (2013-02-21) 之类的标准格式。

如果您需要考虑时区,创建日期对象,添加偏移量,然后取回新日期会更容易。但是,您还需要弄清楚如何将字符串时区转换为可与日期一起使用的数字(最好是分钟,但小时也可以)。

于 2013-02-28T22:54:14.090 回答