我有一个字符串变量存储可能是完整日期或部分日期:
1)完整日期:12/12/2010 12:33 AM
2)部分日期:上午12:33(仅限日期字段)
我正在试图找出解析字符串的最佳方法,以确定字符串是否缺少日期字符串.原因是,在我的代码中如果缺少日期,我将在字符串中附加一个默认日期(例如1/1/1900).请记住,时间可能是各种格式.
更新 - 我对这个问题的具体答案.
正如所有"帖子"所述,这个问题有多个答案,这最终是我用过的,希望它可以帮助其他人*:
public DateTime ProcessDateAndTime(string dateString)
{
string dateAndTimeString = dateString;
string[] timeFormats = new string[]
{
"hh:mm tt", "hh:mm:ss tt",
"h:mm tt", "h:mm:ss tt",
"HH:mm:ss", "HH:mm", "H:mm"
};
// check to see if the date string has a time only
DateTime dateTimeTemp;
if (DateTime.TryParseExact(dateString, timeFormats,
CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.None, out dateTimeTemp))
{
// setting date to 01/01/1900
dateAndTimeString = new DateTime(1900, 1, 1).ToShortDateString() + " " + dateString;
}
return DateTime.Parse(dateAndTimeString);
}
Run Code Online (Sandbox Code Playgroud)
*注意:此方法基于以下假设:您的应用程序中只使用了特定数量的时间格式,并且保证正确格式化日期和时间,或仅传入时间字符串(预先验证以便删除)垃圾文本).
我目前正在创建一个TDD应用程序,但是我在测试应用程序所需的C函数的使用时遇到了问题.这是我需要测试的示例函数:
UIImageWriteToSavedPhotosAlbum(imageToBeSaved, nil, nil, nil)
Run Code Online (Sandbox Code Playgroud)
如何为TDD模拟或存根C方法?
我正在启动一个进程并重定向错误流以便能够解析它并知道发生了什么.我是这样做的:
_proc.ErrorDataReceived += new DataReceivedEventHandler(NetErrorDataHandler);
Run Code Online (Sandbox Code Playgroud)
NetErrorDataHandler具有以下签名:
private void NetErrorDataHandler(object sendingProcess, DataReceivedEventArgs errLine)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我必须使用DataReceivedEventArgs,但我不确定如何测试它.目前我正在运行我正在使用的流程.你不能用额外的数据创建DataReceivedEventArgs的实例,那么我该如何克服这个障碍呢?我现在看到如何做到这一点的唯一方法是创建一个可以为我工作的流程.但是,这不是测试目的的最佳选择.
虽然使用.NET Reflector为应用程序搜索某些代码我没有源代码,但我发现:
if (DeleteDisks)
{
using (List<XenRef<VDI>>.Enumerator enumerator3 = list.GetEnumerator())
{
MethodInvoker invoker2 = null;
XenRef<VDI> vdiRef;
while (enumerator3.MoveNext())
{
vdiRef = enumerator3.Current;
if (invoker2 == null)
{
//
// Why do this?
//
invoker2 = delegate {
VDI.destroy(session, vdiRef.opaque_ref);
};
}
bestEffort(ref caught, invoker2);
}
}
}
if (caught != null)
{
throw caught;
}
private static void bestEffort(ref Exception caught, MethodInvoker func)
{
try
{
func();
}
catch (Exception exception)
{
log.Error(exception, exception);
if (caught == null)
{ …Run Code Online (Sandbox Code Playgroud) 我创建了一个名为addItemToListViewController的UIViewController子类.我选择了添加"xib",只是创建了一个带有几个标签和textField的简单页面.在界面构建器中,我选择了"顶栏 - 导航栏",以便在应用程序运行时将其放入堆栈时,它将具有与初始主窗口匹配的顶栏.在"界面"构建器中,它显示顶部边框,但是当我在模拟器中运行应用程序时,一旦显示视图,顶部栏就不存在了.
这是我放在rootViewController中以呈现视图控制器的代码
- (IBAction)addButtonPressed:(id)sender
{
AddItemToListViewController *addItemToListViewController = [[AddItemToListViewController alloc] initWithNibName: @"AddItemToListViewController" bundle:nil];
[self presentModalViewController: AddItemToListViewController animated: YES];
[AddItemToListViewController release];
}
Run Code Online (Sandbox Code Playgroud)
如果我手动将导航栏添加到xib,我只能让顶部栏出现.如果我必须向我的xib添加导航栏,"Top Bar"属性的目的是什么?
我总是使用带有字符串的NSDictionaries作为键,几乎所有的例子都在web/books/etc上.是相同的.我想我会用一个自定义对象来尝试它.我已经阅读了实现"copyWithZone"方法并创建了以下基本类:
@interface CustomClass : NSObject
{
NSString *constString;
}
@property (nonatomic, strong, readonly) NSString *constString;
- (id)copyWithZone:(NSZone *)zone;
@end
@implementation CustomClass
@synthesize constString;
- (id)init
{
self = [super init];
if (self) {
constString = @"THIS IS A STRING";
}
return self;
}
- (id)copyWithZone:(NSZone *)zone
{
CustomClass *copy = [[[self class] allocWithZone: zone] init];
return copy;
}
@end
Run Code Online (Sandbox Code Playgroud)
现在我试图用一个简单的字符串值添加其中一个对象,然后返回字符串值以登录到控制台:
CustomClass *newObject = [[CustomClass alloc] init];
NSString *valueString = @"Test string";
NSMutableDictionary *dict =
[[NSMutableDictionary alloc] initWithObjectsAndKeys:valueString, newObject, nil];
NSLog(@"Value …Run Code Online (Sandbox Code Playgroud) 我想在我的RSS阅读器中制作一个"收藏夹".我的RSS解析器正在解析NSMutableArray的RSS提要,然后从我的部分rss(选定的帖子)创建对象"item".我的代码:
//Creating mutable array and adding items:
- (void)viewDidLoad {
if (favoritedAlready == nil) {
favoritedAlready = [[NSMutableArray alloc] init];
[[NSUserDefaults standardUserDefaults] setObject:favoritedAlready forKey:@"favorites"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"????????? ? ????");
}
}
- (void) addToFavorites {
NSMutableArray* favoritedAlready = [[NSUserDefaults standardUserDefaults] objectForKey:@"favorites"];
[favoritedAlready addObject: item];
[[NSUserDefaults standardUserDefaults] setObject:favoritedAlready forKey:@"favorites"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"????????? ? ?????????. ? ????????? %i ??????", [favoritedAlready count]);
}
//Removing items (another View)
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
rssItems = [[NSUserDefaults standardUserDefaults] objectForKey:@"favorites"];
[self.tableView reloadData];
NSLog(@"??????????? ?????????, …Run Code Online (Sandbox Code Playgroud) 我已经阅读了SO以及查看NSTimer类的Apple文档,看起来创建计时器的最简单方法是使用以下方法:
[NSTimer scheduledTimerWithTimeInterval:15.0
target:self
selector:@selector(fireThisMethod:)
userInfo:nil
repeats:NO];
Run Code Online (Sandbox Code Playgroud)
据我所知,这将创建一个15秒后触发的计时器.将被触发的方法将是传递到"selector"的任何方法(在本例中为"fireThisMethod").由于"重复"是"否",这意味着它只会被触发一次.我的问题是:
1)是否可以将方法传递给具有多个参数的"选择器"?我见过没有任何参数的方法,或者在这种情况下为1(因为方法名后面有":").一个方法如fireThisMethod:anotherParameter:?
2)我不确定我是否真正了解"target"和"userInfo"参数的用途.你会有一个不是"自我"的"目标"吗?你有一个不是零的"userInfo"吗?如果是这样,在什么情况下?
谢谢
我正在尝试学习如何使用Cucumber并使用以下场景创建步骤(我有一个名为"Vegetable"的模型,并且我添加了一个名为"color"的新属性):
Scenario: add color to existing vegetable
When I go to the edit page for "Potato"
And I fill in "Color" with "Brown"
And I press "Update Vegetable Info"
Then the color of "Potato" should be "Brown"
Run Code Online (Sandbox Code Playgroud)
我目前正在使用"训练轮",所以我有一个网页步骤(web_steps.rb):
When /^(?:|I )go to (.+)?/ do |page_name|
visit path_to(page_name)
end
Run Code Online (Sandbox Code Playgroud)
现在我了解这是如何工作的简单页面导航,如"当我去蔬菜主页." 我所要做的就是添加paths.rb的路径:
When /^the vegetable home page/
'/vegetables'
Run Code Online (Sandbox Code Playgroud)
但是,通过上面的例子,我需要使用特定的蔬菜"/ vegetables/1"(Potato url)去特定的路径.
我不知道该怎么做,所以我尝试创建了自己的步骤:
When /I go to the edit page for "(.*)"/ do |vegetable_name|
flunk "Unimplemented"
end
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
Ambiguous match of "I go …Run Code Online (Sandbox Code Playgroud) 我刚开始创建Windows服务来托管WCF,因为我一直在使用IIS来执行此操作.我已经创建了一个Windows服务来托管大约十几个WCF服务,并在Visual Studio中设置了一个app.config文件来处理每个服务的所有端点和地址.
文件系统上安装了哪些Windows服务?有没有办法重新配置配置文件来更改绑定/地址而无需卸载/重新安装服务?
我一直在使用已发布的web.config文件执行此操作,该文件存在于使用IIS的WCF服务的inetpub中,我想知道它是否与Windows服务相同.