2

我可以选择使用 JavaScript 或 c# 来完成此任务。

我有很多格式为“10/14/2012 8:45:34 PM”的字符串如何删除秒数并像“10/14/2012 8:45PM”一样保留 PM?

我不能使用子字符串,因为字符串的长度每天和时间都会不同。

4

6 回答 6

10

在 C# 中,您可以这样做:

myTime.ToString("MM/dd/yyyy hh:mmtt");

或者,您可以使用此处Format Specifiers描述的内置。

编辑-我删除了和之间的空格mmtt因为我刚刚注意到您的帖子显示8:45PM。如果需要,您可以在mm和之间添加一个空格。tt8:45 PM

于 2012-10-15T22:36:21.077 回答
3

如果字符串的格式一致,则:

var s = '10/14/2012 8:45:34 PM';
s = s.replace(/:\d+ (\w\w)$/, '$1'); // 10/14/2012 8:45PM

我希望这只会被非常有限的观众使用,因为这种格式会被绝大多数人误解。一种更广泛理解且不那么明确的格式是:

2012-10-14 8:45PM
于 2012-10-15T22:40:09.123 回答
2

您可以使用正则表达式。

C#:

string d = "10/14/2012 8:45:34 PM";
d = Regex.Replace(d, @":\d\d ", String.Empty);

Javascript:

var d = "10/14/2012 8:45:34 PM";
d = d.replace(/:\d\d /, '');
于 2012-10-15T22:43:09.360 回答
1

您可以使用正则表达式进行字符串操作,并且非常容易。

var mydate = "10/14/2012 8:45:34 PM";

var formated_date = mydate.replace(/(\d{1,2})\/(\d{1,2})\/(\d{4})\ (\d{1,2}):(\d{1,2}):(\d{1,2})\ (.*)/, "$1/$2/$3\ $4:$5$7");

document.write(formated_date);

于 2015-08-27T17:32:18.367 回答
0

好吧,你可以试试:

var string="10/14/2012 8:45:34 PM";
var resultArray = string.split(":");
var result = string.replace(resultArray[2],"");

这应该在javascript中有效地工作。一秒钟后我会测试它,然后更新它。

更新:

var string="10/14/2012 8:45:34 PM";
var resultArray = string.split(":");
var result = string.replace(":"+resultArray[2]," ")+resultArray[2].split(" ")[1];

有点恶心。但它工作得很好:http: //jsfiddle.net/x8uUW/

使用正则表达式更新(我使用了正则表达式生成器,因此无论如何它都不像它可能的那样紧凑。但它确实有效:http: //jsfiddle.net/x8uUW/1/

于 2012-10-15T22:36:12.077 回答
0

I tried using ToString() in Axure JavaScript for setting text of widgets, but failed, and regex in Axure is out of the question (at least, at the time I posted this), so I had figured out another simple alternative, but inefficient method of doing it:

aDate.toLocaleTimeString().replace(':'+aDate.getSeconds(),'')
于 2014-05-13T13:17:48.230 回答